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新建多桌面切换操作【技巧】