self.pick = [[UIPickerView alloc] init]
self.pick.dataSource = self
self.pick.delegate = self
textField.inputView =self. pick
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return self.pickArray.count
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return self.pickArray[row]
}
UIPickerView的主要内容实际上并不多,主要是一个UIPickerView类和对应的UIPickerViewDelegate,UIPickerViewDataSource协议,分别表示代理和数据源。在此不细说这些,只是解答我们遇到的一个小需求。通常,UIPickerView是可以定义多列内容的,比如年、月、日三列,这些列之间相互不干扰,可以自已滚自己的,不碍别人的事。不过,我们有这么一个需求,也是有三列,但这三列需要一起滚。嗯,这个就需要另行处理了。
在UIPickerViewDelegate中,声明了下面这样一个代理方法:
- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(UIView *)view
我们通过这个方法就可以来自定义行的视图。时间不早,废话就不多说了,直接上代码吧:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
PickerViewCell *pickerCell = (PickerViewCell *)view
if (!pickerCell) {
NSInteger column = 3
pickerCell = [[PickerViewCell alloc] initWithFrame:(CGRect){CGPointZero, [UIScreen mainScreen].bounds.size.width, 45.0f} column:column]
}
[pickerCell setLabelTexts:@[...]]
return pickerCell
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)