IOS 开发之PickerView文字和随机数的使用
发布时间 - 2026-01-11 02:45:54 点击率:次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控件的使用方法
# 随机数
# 方法来
# 的是
# 都是
# 是一个
# 多个
# 如有
# 是由
# 又有
# 只需
# 希望能
# 可以直接
# 为其
# 要得
# 谢谢大家
# 等内容
# 可以得到
# 放着
# 不同类型
# 有三种
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
三星、SK海力士获美批准:可向中国出口芯片制造设备
javascript基于原型链的继承及call和apply函数用法分析
如何在宝塔面板中修改默认建站目录?
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
高防服务器如何保障网站安全无虞?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
JavaScript数据类型有哪些_如何准确判断一个变量的类型
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何快速搭建二级域名独立网站?
JS碰撞运动实现方法详解
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
java获取注册ip实例
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
高端智能建站公司优选:品牌定制与SEO优化一站式服务
Laravel怎么使用artisan命令缓存配置和视图
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
Laravel如何实现API速率限制?(Rate Limiting教程)
Python函数文档自动校验_规范解析【教程】
图册素材网站设计制作软件,图册的导出方式有几种?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Python并发异常传播_错误处理解析【教程】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
Laravel如何配置和使用缓存?(Redis代码示例)
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
如何在建站之星绑定自定义域名?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
独立制作一个网站多少钱,建立网站需要花多少钱?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
电商网站制作价格怎么算,网上拍卖流程以及规则?
iOS UIView常见属性方法小结
网站制作大概多少钱一个,做一个平台网站大概多少钱?
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】

