您的位置:首页 > 产品设计 > UI/UE

数据选择控件-UIPickerView的总结

2016-05-02 22:30 531 查看
数据选择控件就是帮助用户快速选择数据的控件。
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被选择后要做的事情。
调用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), 意思一样。

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息