1、注意点:

首先,需要注意,设置UIPickerView的【数据源】以及【代理】,这里要遵循一个三部曲:

  1. 遵守协议
  2. 设置代理/数据源
  3. 实现方法

协议如下:

<UIPickerViewDataSource,UIPickerViewDelegate>

 苹果的协议的命名都很规范,都以类名开头,以DataSource或Delegate结尾,所以,这里不光是这个控件,在自学的过程中,这样的规律也可以让自己受益匪浅

当实现了DataSource后,系统的编译器会产生⚠️,提示让我们实现一些协议中requered的方法,我们可以按住【cmd】键,点击DataSource协议,进入协议头文件看一下,我们可以看到如下图所示的内容:

@protocol UIPickerViewDataSource<NSObject>
@required

// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;

// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
@end

 这里,我们看到有两个方法,我的老师袁振告诉我说,学习一个方法,需要注意两点,一个是方法的作用一个是方法什么时候调用这里,我们依照这个方式来学习这两个方法。

其实,如果英语好的朋友已经知道这两个方法的作用了,注释很清楚。而对于英语不好的朋友,可以看一下我这篇文章,其实英语还是很重要的,废话不多说,我们先来说这两个方法的作用:

1.返回需要显示多少列

2.返回component列有多少行

这两个是数据源方法,在加载控件的时候,会调用。

设置好以后这时候我们来运行一下,会看到内容全都是问号。这是因为我们仍需要一个方法,来告诉pickerView来显示什么内容,那为什么不把这个也定义为数据源方法呢?我猜是因为这里需要显示什么,有两个方法:

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

 第一个,返回值是一个NSString那么,我们就知道了,第一个方法可以让控件显示一些文字,而第二个,如此类推,它会让控件显示一些视图。有了这三个方法,就可以简单地显示一个UIPickerView了。

posted on 2014-10-29 20:30  sun_fox  阅读(245)  评论(0)    收藏  举报