[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.按钮点击后,显示为“已下载”,并且不 ...
随机推荐
- 函数lock_rec_set_nth_bit
lock 分配内存 lock = mem_heap_alloc(trx->lock_heap, sizeof(lock_t) + n_bytes); 内存分配图 0xxx 2 xxx 0xxx3 ...
- EF4.0和EF5.0增删改查的写法区别及执行Sql的方法
EF4.0和EF5.0增删改查的写法区别 public T AddEntity(T entity) { //EF4.0的写法 添加实体 //db.CreateObjectSet<T>(). ...
- linux 安装oracle 11g
安装环境 Linux服务器:SuSe10 sp2 64位 Oracle服务器:Oracle11gR2 64位 系统要求 Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1G的物理内存 ...
- system函数的总结
最近在看APUE第10章中关于system函数的POSIX.1的实现.关于POSIX.1要求system函数忽略SIGINT和SIGQUIT,并且阻塞信号SIGCHLD的论述,理解得不是很透彻,本文就 ...
- Unable to execute dex: method ID not in [0, 0xffff]: 65536
http://ingramchen.io/blog/2014/09/prevention-of-android-dex-64k-method-size-limit.html
- longest common str
#include <vector> #include <iostream> #include <string> using namespace std; int l ...
- android 布局居中
android:layout_alignParentLeft="true" 位于父容器左上角 android:layout_alignParentBottom, android:l ...
- web自动化框架之一介绍与环境搭建(Selenium+Eclipse+Python)
看到一篇环境搭建文章,详细又全面,这里就不一一重复了 http://blog.csdn.net/dyllove98/article/details/9390649 其它: 1.框架介绍 整个 ...
- iOS开发常用输入校验
1.数字字符校验 #define NUMBERSPERIOD @"0123456789." - (BOOL)CheckInput:(NSString *)string { NSCh ...
- STL底层数据结构实现
C++ STL 的实现: 1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层 ...