天天看点

iOS——选择视图 UIPickerView一、UIPickerView

一、UIPickerView

1. 属性

1)数据源对象

@property(nullable,nonatomic,weak)id<UIPickerViewDataSource> dataSource; 

2)代理对象

@property(nullable,nonatomic,weak)id<UIPickerViewDelegate>   delegate; 

3)设置是否有选中标记(以高亮背景为选中)

@property(nonatomic) BOOL showsSelectionIndicator;

4)获得组数

@property(nonatomic,readonly)NSInteger numberOfComponents;

5)获得指定组的行数

- (NSInteger)numberOfRowsInComponent:(NSInteger)component;

6)获得指定组的每行大小

- (CGSize)rowSizeForComponent:(NSInteger)component;

7)获得指定组的每行视图;如果没有设置视图,就返回 nil

- (nullableUIView *)viewForRow:(NSInteger)row forComponent:(NSInteger)component;

8)重新加载所有的组

- (void)reloadAllComponents;

9)重新加载指定的组

- (void)reloadComponent:(NSInteger)component;

10)设置直接显示某组某行,并设置动画效果

- (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated;

11)返回在指定组中选中的行数;如果什么都没有选中,就返回 -1

- (NSInteger)selectedRowInComponent:(NSInteger)component;

2. UIPickerViewDataSource

1) 设置一个 UIPickerView 对象中的组数(必须实现)

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;

2)设置每一个组的行数(必须实现)

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;

以上两个方法是必须实现的,也就是说,当在屏幕上显示一个 UIPickerView 对象时,必须通过这两个方法指明组数和行数,才能显示出一个 UIPickerView 对象

3. UIPickerViewDelegate

1)设置每一个组数的宽度

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component;

2)设置每一组的每一行的高度

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component;

3)设置每一组、每一行的标题

- (nullableNSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;

4)设置每一组每一行的视图

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullableUIView *)view;

5)当选中某一组、某一行时调用的方法

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;

二、UIDatePicker

1. 属性

1)设置风格;默认为 UIDatePickerModeDateAndTime

@property (nonatomic)UIDatePickerMode datePickerMode;

typedef NS_ENUM(NSInteger, UIDatePickerMode) {
    UIDatePickerModeTime,            // 显示时间
    UIDatePickerModeDate,            // 显示日期
    UIDatePickerModeDateAndTime,     // 显示时间和日期
    UIDatePickerModeCountDownTimer,  // 显示定时器
};
           

2. 设置本地化属性;默认为 [NSLocale currentLocale],如果设置为 nil 则返回默认值

@property (nullable, nonatomic, strong) NSLocale * locale; 

本地化属性封装了关于语言和文化的层次,如日期的格式信息;

如果设备的 “设置” 中地区选择 “中国” 时,那么 [NSLocale currentLocale].localeInentifier 返回的是 @"zh_CN"

3. 设置日历属性;默认为 [NSCalendar currentCalendar],如果设置为 nil 则返回默认值

@property (null_resettable, nonatomic, copy) NSCalendar * calendar;

该属性的默认值对应用户当前的日历

4. 设置日期属性;默认值是当前 UIDatePicker 对象创建时的日期

@property (nonatomic, strong) NSDate * date; 

在 UIDatePickerModeCountDownTimer 模式下,UIPickerView 对象从 0 开始,并且忽略此属性

该属性就是 UIPickerView 对象中显示的日期

5. 设置时区属性;默认值为 nil,使用 NSTimeZone 的 localTimeZone(本地时区) 作为当前时区,或者使用 calendar 属性所使用的时区作为当前时区

@property (nullable, nonatomic, strong) NSTimeZone * timeZone;

6. 设置最小能显示的时间;默认是 nil,nil 意味着没有时间的约束;当 minimumDate > maximumDate 时,该值被忽略;在定时器模式中,也会被忽略

@property (nullable, nonatomic, strong) NSDate * minimumDate;

7. 设置最大能显示的事件;默认是 nil

@property (nullable, nonatomic, strong) NSDate * maximumDate;

8. 设置倒计时的秒数;只能在倒计时模式中使用,如果在其他模式中会被忽略;默认是 0,最大是

23h: 59m: 59s (86,399s)

@property (nonatomic) NSTimeInterval countDownDuration;

9. 设置间隔时间,就是一次能调多少秒;默认是 1,最大是 30

@property (nonatomic) NSInteger minuteInterval;

10. 设置 date 属性的值,并设置动画

- (void)setDate:(NSDate *)date animated:(BOOL)animated;