IOS 开发之PickerView文字和随机数的使用

PickerView用于展示供选择的内容(例如日期选取、点菜等)。
有三种情况:
1.每一列都是独立的选取
2.右边的列受到左边列的影响
3.包含图片
PickerView和TableView类似,通过数据源来显示数据,与TableView同样地,让控制器称为其数据源。
但是PickerView的数据源仅仅提供行数和列数,在代理方法内才能设置内容。
通过两个数据源方法设置行和列数,通过一个代理方法来设定内容,注意component表示第几列:
这里的foods成员是一个复合数组,即NSArray内又有多个NSArray,每个内层的NSArray中放着一个类型的食物,不同内层NSArray之间代表不同类型的食物。
要得到这样的复合数组,可以直接建立,例如:
@[@[...],@[...],@[...]];
或者通过plist读取
#pragma mark - PickerView数据源方法
// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return self.foods.count;
}
// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
NSArray *foodArray = self.foods[component]; // component是列
return foodArray.count;
}
#pragma mark - PickerView代理方法
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return self.foods[component][row];
}
要监听选择,只需要再实现一个代理方法:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSString *name = self.foods[component][row];
switch (component) {
case 0:
self.fruitLabel.text = name;
break;
case 1:
self.mainLabel.text = name;
break;
case 2:
self.drinkLabel.text = name;
break;
default:
break;
}
}
一个细节:没有点选时的显示数据初始化:
间接利用上面的选择方法来初始化数据:每列都选中第0行,由于用不到pickerView本身,因此传入nil也无妨。
for (int i = 0; i < self.foods.count; i++) {
[self pickerView:nil didSelectRow:0 inComponent:i];
}
Tip:键盘上方常常用导航工具条,用于切换上一项、下一项等内容。
直接获取当前的选取项:selectRowInComponent: 传入列号可以得到选中的是第几行。
随机数:
arc4random()可以产生0或者正整数,要产生0 ~ (x-1)的随机数,应该使用 arc4random( ) % x。
关于选择层次的设计(选择左边右边变化),是由代码实现的(更换列的数据)。
需要用到reloadAllComponents或者reloadComponent:方法。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# IOS
# PickerView
# PickerView使用方法
# PickerView随机数
# IOS 开发之PickerView自定义视图的实例详解
# iOS中自定义弹出pickerView效果(DEMO)
# iOS开发之UIPickerView实现城市选择器的步骤详解
# 详解iOS App中UIPickerView滚动选择栏的添加方法
# iOS App中UIPickerView选择栏控件的使用实例解析
# 实例讲解iOS应用开发中UIPickerView滚动选择栏的用法
# 详解iOS开发中UIPickerView控件的使用方法
# 随机数
# 方法来
# 的是
# 都是
# 是一个
# 多个
# 如有
# 是由
# 又有
# 只需
# 希望能
# 可以直接
# 为其
# 要得
# 谢谢大家
# 等内容
# 可以得到
# 放着
# 不同类型
# 有三种
相关文章:
C#怎么使用委托和事件 C# delegate与event编程方法
家具网站制作软件,家具厂怎么跑业务?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
javascript基本数据类型及类型检测常用方法小结
Python如何创建带属性的XML节点
内部网站制作流程,如何建立公司内部网站?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
网站企业制作流程,用什么语言做企业网站比较好?
如何通过网站建站时间优化SEO与用户体验?
如何通过云梦建站系统实现SEO快速优化?
如何通过PHP快速构建高效问答网站功能?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
Thinkphp 中 distinct 的用法解析
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
香港服务器租用每月最低只需15元?
简单实现Android验证码
如何登录建站主机?访问步骤全解析
如何通过VPS建站实现广告与增值服务盈利?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何选择高效稳定的ISP建站解决方案?
javascript中对象的定义、使用以及对象和原型链操作小结
建站168自助建站系统:快速模板定制与SEO优化指南
建站OpenVZ教程与优化策略:配置指南与性能提升
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
网站按钮制作软件,如何实现网页中按钮的自动点击?
如何用PHP工具快速搭建高效网站?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
如何快速启动建站代理加盟业务?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
如何选择高性价比服务器搭建个人网站?
如何在云主机上快速搭建多站点网站?
如何在云主机上快速搭建网站?
如何选择美橙互联多站合一建站方案?
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何通过VPS建站无需域名直接访问?
设计网站制作公司有哪些,制作网页教程?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
建站之星代理费用多少?最新价格详情介绍
重庆市网站制作公司,重庆招聘网站哪个好?
如何通过远程VPS快速搭建个人网站?
平台云上自助建站如何快速打造专业网站?
如何选择建站程序?包含哪些必备功能与类型?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
如何在阿里云ECS服务器部署织梦CMS网站?
如何配置支付宝与微信支付功能?
开封网站制作公司,网络用语开封是什么意思?
建站之星CMS五站合一模板配置与SEO优化指南
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
*请认真填写需求信息,我们会在24小时内与您取得联系。