数据选择控件-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);
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);
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- flex 控件的重要属性
- Delphi控件ListView的属性及使用方法详解
- web下载的ActiveX控件自动更新
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- 在Android开发中使用自定义组合控件的例子
- MFC中动态创建控件以及事件响应实现方法
- WinForm自定义函数FindControl实现按名称查找控件
- Android控件之ProgressBar用法实例分析
- WinForm拖拽控件生成副本的解决方法
- ASP.NET动态添加用户控件的方法