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++用Dijkstra(迪杰斯特拉)算法求最短路径
如何自定义建站之星模板颜色并下载新样式?
建设网站制作价格,怎样建立自己的公司网站?
如何用好域名打造高点击率的自主建站?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何高效完成自助建站业务培训?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
制作网站公司那家好,网络公司是做什么的?
外贸公司网站制作哪家好,maersk船公司官网?
TestNG的testng.xml配置文件怎么写
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
建站之星在线版空间:自助建站+智能模板一键生成方案
如何快速搭建二级域名独立网站?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何通过.red域名打造高辨识度品牌网站?
如何在云指建站中生成FTP站点?
网站app免费制作软件,能免费看各大网站视频的手机app?
如何零基础在云服务器搭建WordPress站点?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
如何获取上海专业网站定制建站电话?
如何用狗爹虚拟主机快速搭建网站?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
C++中引用和指针有什么区别?(代码说明)
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何配置支付宝与微信支付功能?
网站制作公司排行榜,四大门户网站排名?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
如何选购建站域名与空间?自助平台全解析
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
如何在阿里云购买域名并搭建网站?
如何在腾讯云免费申请建站?
如何快速使用云服务器搭建个人网站?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
,石家庄四十八中学官网?
中山网站推广排名,中山信息港登录入口?
如何快速搭建高效简练网站?
建站主机与服务器功能差异如何区分?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
如何用y主机助手快速搭建网站?
建站上传速度慢?如何优化加速网站加载效率?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何访问已购建站主机并解决登录问题?
*请认真填写需求信息,我们会在24小时内与您取得联系。