UIDatePicker 和 UIPickerView

weixin_34054866發表於2015-12-08

UIDatePicker

UIDatePicker:是一個控制器類,封裝了 UIPickerView,但是他是UIControl的子類,專門用於接受日期、時間和持續時長的輸入。日期選取器的各列會按照指定的風格進行自動配置,這樣就讓開發者不必關心如何配置錶盤這樣的底層操作。你也可以對其進行定製,令其使用任何範圍的日期。
UIDatePicker初始化:

UIDatePicker *datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(30, 300, 0, 0)];
[datePicker addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged];//新增觸發事件
[self.view addSubview:datePicker];

UIDatePicker常用設定

setLocale:設定地區
[datePicker setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"zh_CN"]];

setCalendar:設定datePicker的日曆(預設為當天)
[datePicker setCalendar:[NSCalendar currentCalendar]];

setDatePickerMode:設定時間模式,預設UIDatePickerModeDateAndTime
[datePicker setDatePickerMode:UIDatePickerModeDate];

setCountDownDuration:設定倒數計時的秒數
[datePicker setCountDownDuration:2*60];

setTimeZone:設定時區
[datePicker setTimeZone:[NSTimeZone localTimeZone]];

設定最大,最小日期

//設定一個時間戳
NSTimeInterval timeInterval = 60;
NSDate *minDate = [[NSDate alloc]initWithTimeIntervalSinceNow:-timeInterval];
NSDate *maxDate = [[NSDate alloc]initWithTimeIntervalSinceNow:timeInterval];
//設定最大,最小日期
datePicker.minimumDate = minDate;
datePicker.maximumDate = maxDate;

設定分鐘間隔
datePicker.minuteInterval = 5;

取出日期
NSDate *select = datePicker.date;

UIPickerView

//初始化一個pickerView
UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 436, 414, 300)];
//設定背景色
pickerView.backgroundColor = [UIColor whiteColor];
//設定代理
pickerView.delegate = self;
pickerView.dataSource = self;
[self.view addSubView:pickerView];```

##UIPickerViewDataSource代理方法
-numberOfComponentsInPickerView:設定列的返回數量(必須實現)
  • (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
    {
    return 3;
    }```

-pickerView:numberOfRowsInComponent:設定列裡邊元件的個數 component:元件(必須實現)

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    //如果是第一列
    if (component == 0)
    {
        return 10;
    }
    //如果是第二列
    else if (component == 1)
    {
        return 5;
    }
    else
    {
        return 3;
    }
}```

##UIPickerViewDelegate代理方法
返回元件的標題:有三個方法都可以用,不同方法的返回值不同
  • (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    if (component == 0) {
    return @"第一列";
    } else if (component == 1) {
    return @"第二列";
    } else {
    return @"第三列";
    }
    }```

pickerView:didSelectRow:inComponent:選擇器選擇的方法 row:被選中的行

    //選擇第一列執行的方法
    if (component == 0) {
           NSLog(@"1");
     }
    //選擇第二列執行的方法
    else if (component == 1) {
          NSLog(@"2");
    }
   else {
          NSLog(@"3");
    }
}```

pickerView:widthForComponent:設定元件的寬度
  • (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
    {
    if (component == 0) {
    return 100;
    } else if (component == 1) {
    return 200;
    } else {
    return 100;
    }
    }```

pickerView:rowHeightForComponent:設定列裡邊元件的高度

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
    if (component == 0) {
        return 20;
    } else if (component == 1) {
        return 25;
    } else {
        return 30;
    }
}```

相關文章