数据选择控件-UIPickerView的总结


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


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


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


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


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


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


主动设置UIPickerView选中某项,并且在UIPickerView被选择后要做的事情。
调用UIPickerViewselectRow: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), 意思一样。


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















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值