[iOS基础控件 - 6.10.1] PickerView 餐点搭配Demo

// 遵守UIPickerViewDataSource,UIPickerViewDelegate
@interface ViewController () <UIPickerViewDataSource, UIPickerViewDelegate> /** 选择器 */
@property (weak, nonatomic) IBOutlet UIPickerView *pickerView; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. // 设置dataSource
self.pickerView.dataSource = self;
// 设置delegage
self.pickerView.delegate = self;
}
#pragma mark - 代理方法
/** 列数 */
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return ;
} /** 对应列的行数 */
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return ;
} /** 对应列和行的显示内容 */
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return @"内容";
}


/** 加载数据,延迟加载 */
- (NSArray *) foodCategories {
if (nil == _foodCategories) {
_foodCategories = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"foods.plist" ofType:nil]];
} return _foodCategories;
} #pragma mark - dataSource方法
/** 列数 */
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return self.foodCategories.count;
} /** 对应列的行数 */
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
NSArray *foods = self.foodCategories[component];
return foods.count;
} #pragma mark - delegate方法
/** 对应列和行的显示内容 */
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
NSArray *foods = self.foodCategories[component];
return foods[row];
}


/** 水果 */
@property (weak, nonatomic) IBOutlet UILabel *fruitLabel;
/** 主菜 */
@property (weak, nonatomic) IBOutlet UILabel *mainLabel;
/** 饮料 */
@property (weak, nonatomic) IBOutlet UILabel *drinkLabel;
/** 响应选择餐点事件 */
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSArray *foods = self.foodCategories[component];
NSString *food = foods[row]; switch (component) {
case :
self.fruitLabel.text = food;
break;
case :
self.mainLabel.text = food;
break;
case :
self.drinkLabel.text = food;
break;
default:
break;
}

/** 随机选择餐点 */
- (IBAction)onRandomClicked {
// 循环所有餐点种类
for (int i=; i<self.foodCategories.count; i++) {
// 之前选择的餐点行数
NSInteger originalRow = [self.pickerView selectedRowInComponent:i]; NSInteger row = originalRow; // 此种类内含有的所有餐点
NSArray *foods = self.foodCategories[i];
// 如果随机的餐点跟上一次的相同,继续随机
while (row == originalRow) {
row = arc4random() % foods.count;
} // 通知pickerView改变选择
[self.pickerView selectRow:row inComponent:i animated:YES]; // 改变显示区
[self pickerView:self.pickerView didSelectRow:row inComponent:i];
}
}

[iOS基础控件 - 6.10.1] PickerView 餐点搭配Demo的更多相关文章
- [iOS基础控件 - 6.10.2] PickerView 自定义row内容 国家选择Demo
A.需求 1.自定义一个UIView和xib,包含国家名和国旗显示 2.学习row的重用 B.实现步骤 1.准备plist文件和国旗图片 2.创建模型 // // Flag.h // Co ...
- [iOS基础控件 - 6.9.3] QQ好友列表Demo TableView
A.需求 1.使用plist数据,展示类似QQ好友列表的分组.组内成员显示缩进功能 2.组名使用Header,展示箭头图标.组名.组内人数和上线人数 3.点击组名,伸展.缩回好友组 code so ...
- [iOS基础控件 - 6.10.7] UIWindow
A.UIWindow概念 1.继承UIView,是一种特殊的UIView 2.通常一个APP只有一个UIWindow 3.iOS程序启动后,创建的第一个视图就是UIWindow 4.没有UIWindo ...
- [iOS基础控件 - 6.10.5] UIApplication
A.概念 1.UIApplication对象是应用程序的象征,每个应用都有 2.单例 3.[UIApplication sharedApplication] 获取 4.iOS启动创建的第一个对象 5. ...
- [iOS基础控件 - 6.10] Notification 通知机制
A.定义 iOS程序都有一个NSNotificationCenter的单例对象,用来负责发布不同对象之间的通知 任何对象都能够在NSNotificationCenter发布通知,发 ...
- [iOS基础控件 - 6.10.6] UIApplicationDelegate & 程序启动过程
A.概念 1.移动app非常容易受到其他的系统.软件事件的干扰,如来电.锁屏 2.app受到干扰的时候,UIApplication会通知delegate,来代理处理干扰事件 3.delegate可以处 ...
- [iOS基础控件 - 6.10.4] 项目启动原理 项目中的文件
A.项目中的常见文件 1.单元测试Test 2.Frameworks(xCode6 创建的SingleView Project没有) 依赖框架 3.Products 打包好的文件 4. p ...
- [iOS基础控件 - 6.10.3] DatePicker & UIToolBar
A.需求 1. 学习DatePicker的基本配置 2.使用TextField召唤指定类型的输入键盘View,这里使用DatePicker 3.给输入键盘上方加上一个UIToolBar,实现如关闭键盘 ...
- [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)
A.概述 在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能 1.按钮点击后,显示为“已下载”,并且不 ...
随机推荐
- c# webbrowser 随机点击链接 2
找到广告代码所在的div或table ,然后用WebBrowser执行js去点这个div(或table) 那个广告是js实现的,你浏览的时候是看不到图片和连接的,请问各位大虾应该怎么实现?给点思路.. ...
- sublime中文乱码
今天在用sublime的时候,又出现乱码的情况了.弹层如下: 检测了一下,当前文件,sublime编辑器左下角显示如下: 显示的是 ASCII 编码的文件,而其他没有没问题的页面显示的的 GBK(或G ...
- hdu 4920 Matrix multiplication (矩阵计算)
题目链接 题意:给两个矩阵a, b, 计算矩阵a*b的结果对3取余. 分析:直接计算时间复杂度是O(n^3),会超时,但是下面第一个代码勉强可以水过,数据的原因. #include <iostr ...
- Java 日期时间
Java 日期时间 标签 : Java基础 Date java.util.Date对象表示一个精确到毫秒的瞬间; 但由于Date从JDK1.0起就开始存在了,历史悠久,而且功能强大(既包含日期,也包含 ...
- Java Web编程的主要组件技术——Struts入门
参考书籍:<J2EE开源编程精要15讲> Struts是一个开源的Java Web框架,很好地实现了MVC设计模式.通过一个配置文件,把各个层面的应用组件联系起来,使组件在程序层面联系较少 ...
- POJ 3177 Redundant Paths (桥,边双连通分量,有重边)
题意:给一个无向图,问需要补多少条边才可以让整个图变成[边双连通图],即任意两个点对之间的一条路径全垮掉,这两个点对仍可以通过其他路径而互通. 思路:POJ 3352的升级版,听说这个图会给重边.先看 ...
- Java [Leetcode 169]Majority Element
题目描述: Given an array of size n, find the majority element. The majority element is the element that ...
- 【解决方案】jquery live的change事件在IE下失效
$("#spanChildSec select").live("change", function () { //处理内容 ...
- 最简单的视音频播放示例5:OpenGL播放RGB/YUV
本文记录OpenGL播放视频的技术.OpenGL是一个和Direct3D同一层面的技术.相比于Direct3D,OpenGL具有跨平台的优势.尽管在游戏领域,DirectX的影响力已渐渐超越OpenG ...
- 一、oracle 高水位线详解
一.什么是水线(High Water Mark)? 所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称 ...