UIPickerView,最近看了朋友写了工程,自己也整理了下,封装了一个还算实用的demo,和小伙伴们一起分享下。
首先,UIPickerView我认为他是相当自由的,并且很随意,能够满足我们需要选择器的各种情况,因为不管是单独一列的,还是多列的操作,UIPickerView都能胜任,而且胜任的很好,所以大多情况下我会选用他,当然如果是选择时间UIDatePicker会胜任的更为简洁。
其次,UIPickerView给我们提供了很多代理也是相对方便的,习性和我们常用的UITAble类似,比如这次demo中使用到的
#pragma mark - UIPickerViewDataSource
/**
* 设置列数(必须要实现的代理方法)
*/
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return _SWArr.count;
}
/**
* 每列多少行(必须要实现的代理方法)
* component:第几列
*/
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [_SWArr[component]count];
}
#pragma mark - UIPickerViewDelegate
/**
* 获取到数据源中的数据,展示到pickerView上
* component:第几列
* row:第几行
*/
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return _SWArr[component][row];
}
/**
* 当每次停止滚动,走这个代理。
* component:第几列
* row:第几行
*/
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
[self HavePickerText];
}
/**
* 返回的是每个选项的view
* 如果需要改变选择文字的字体、字号、颜色等可以选用此代理
* component:第几列
* row:第几行
*/
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view{
UILabel *lab = [[UILabel alloc] init];
lab.backgroundColor = [UIColor redColor];
lab.textColor = [UIColor yellowColor];
lab.text = _SWArr[component][row];
return lab;
}
最后,给大家看下多行和单行的效果图如下:
单行:
多行:
多多行(哈哈):
下方按钮为Demo地址:
UIPickerViewDemo--司小文(提取码:8624)
感谢观看,学以致用更感谢。