数据选择控件-UIPickerView的总结


数据选择控件 就是帮助用户快速选择数据的控件。
UIPickerView 显示一组或多组数据方便用户选择。


作用
(1)从指定的数据源中选择数据;
(2) 通常以UITextField的inputView的形式出现 (当 选中某个文本框后, 弹出键盘中显示该控件)。


注意
使用 PickerView 之前 需要指定数据源对象和代理对象。需要使用到的两个协议:
UIPickerViewDataSource, 数据源协议。
UIPickerViewDelegate, 代理协议。


UIPickerView 显示数据的步骤
0. 加载数据源。
1. 设置控制器是当前 UIPickerView 的数据源对象和代理对象。
2 . 实现 数据源方法 numberOfComponentsInPickerView : 返回列的个数。
3 . 实现 数据源方法pickerView:numberOfRowsInComponent:返回每列的行数。
4. 实现代理方法picke rView:titleForRow : 返回每行的数据 内容。
5 通过代理方法 pickerView:didSelectRow:inComponent : 来监听UIPickerView的选择事件,例如将当前选中项的数据显示到指定的Label


设置默认选中项
当第一次加载好后, Label 中显示的默认值。
手动调用 pickerView:didSelectRow:inComponent : 方法 , 来设置默认选中项 , 设置每列的 0 行默认被选中。
    for ( int i = 0; i < self.dataList.count ; i ++) {
        [self pickerView:nil didSelectRow:0 inComponent:i ];
    }


UIPickerView获取当前列的选中行索引
- (NSInteger)selectedRowInComponent:(NSInteger)component; 


主动设置UIPickerView选中某项,并且在UIPickerView被选择后要做的事情。
调用 UIPickerView selectRow:inComponent:animated :仅仅设置了UIPickerView主动选中某项, 只会改变 UIPickerView 的选择 , 并不会调用 pickerView:didSelectRow:inComponent : 方法。所以在调用前者后, 再手动调用一次代理方法pickerView:didSelectRow:inComponent:来做一些额外的事情。


UIPickerView的重新加载方法
- (void) reloadAllComponents ;
- (void)reloadComponent:(NSInteger)component;
上面两个方法表示重新刷新数据 ,  即 : 重新调用数据源方法与代理方法。


生成随机数
arc4random ( )%(n+1)
arc4random_uniform(n), 苹果推荐使用   
都是C语言函数
随机生成一个无符号整数((0~ (2的32次方)-1))
随机生成一个 0–n 之间的数字
通过调用C语言的arc4random()函数,生成一个随机的无符号正数,用该数字与某个正数取余来得到一个随机数。比如要得到一个0-11之间的随机数,那么就用 arc4random() % 12。也可以使用: arc4random_uniform(12), 意思一样。


避免当前生成的随机数, 与当前选择的项一致
获取当前列中的选择项的索引
NSUInteger currentIndex = [ self.pickerView Food selectedRowInComponent:i ];
一开始假设两个值相同。
NSUInteger temp Index = currentIndex ;
do {
//产生随机数
                tempIndex =arc4random() % self.dataList[i]  
} while ( temp Index == currentIndex);















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值