码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2014-12-16 16:49:57      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   io   color   os   使用   sp   

A.需求
1.使用PickerView做出有3列餐点(水果、主菜、饮料)的搭配Demo
2.选择的餐点实时显示在“显示区”
3.提供“随机”按钮,随机选择菜品搭配
 
B.实现步骤
1.拖入一个PickerView
bubuko.com,布布扣
 
2.用控制器配置dataSource和delegate
 1 // 遵守UIPickerViewDataSource,UIPickerViewDelegate
 2 @interface ViewController () <UIPickerViewDataSource, UIPickerViewDelegate>
 3 
 4 /** 选择器 */
 5 @property (weak, nonatomic) IBOutlet UIPickerView *pickerView;
 6 
 7 @end
 8 
 9 @implementation ViewController
10 
11 - (void)viewDidLoad {
12     [super viewDidLoad];
13     // Do any additional setup after loading the view, typically from a nib.
14    
15     // 设置dataSource
16     self.pickerView.dataSource = self;
17     // 设置delegage
18     self.pickerView.delegate = self;
19 }
 
3.实现代理方法
 1 #pragma mark - 代理方法
 2 /** 列数 */
 3 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
 4     return 3;
 5 }
 6 
 7 /** 对应列的行数 */
 8 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
 9     return 5;
10 }
11 
12 /** 对应列和行的显示内容 */
13 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
14     return @"内容";
15 }
 
bubuko.com,布布扣
 
4.引入plist文件,读取数据
bubuko.com,布布扣
 
 1 /** 加载数据,延迟加载 */
 2 - (NSArray *) foodCategories {
 3     if (nil == _foodCategories) {
 4         _foodCategories = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"foods.plist" ofType:nil]];
 5     }
 6     
 7     return _foodCategories;
 8 }
 9 
10 #pragma mark - dataSource方法
11 /** 列数 */
12 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
13     return self.foodCategories.count;
14 }
15 
16 /** 对应列的行数 */
17 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
18     NSArray *foods = self.foodCategories[component];
19     return foods.count;
20 }
21 
22 
23 #pragma mark - delegate方法
24 /** 对应列和行的显示内容 */
25 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
26     NSArray *foods = self.foodCategories[component];
27     return foods[row];
28 }
 
 
bubuko.com,布布扣
 
5.制作显示区
bubuko.com,布布扣
 
1 /** 水果 */
2 @property (weak, nonatomic) IBOutlet UILabel *fruitLabel;
3 /** 主菜 */
4 @property (weak, nonatomic) IBOutlet UILabel *mainLabel;
5 /** 饮料 */
6 @property (weak, nonatomic) IBOutlet UILabel *drinkLabel;
 
6.响应选择事件
 1 /** 响应选择餐点事件 */
 2 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
 3     NSArray *foods = self.foodCategories[component];
 4     NSString *food = foods[row];
 5    
 6     switch (component) {
 7         case 0:
 8             self.fruitLabel.text = food;
 9             break;
10         case 1:
11             self.mainLabel.text = food;
12             break;
13         case 2:
14             self.drinkLabel.text = food;
15             break;
16         default:
17             break;
18     }
 
bubuko.com,布布扣
 
7.制作“随机”功能
 1 /** 随机选择餐点 */
 2 - (IBAction)onRandomClicked {
 3     // 循环所有餐点种类
 4     for (int i=0; i<self.foodCategories.count; i++) {
 5         // 之前选择的餐点行数
 6         NSInteger originalRow = [self.pickerView selectedRowInComponent:i];
 7        
 8         NSInteger row = originalRow;
 9        
10         // 此种类内含有的所有餐点
11         NSArray *foods = self.foodCategories[i];
12         // 如果随机的餐点跟上一次的相同,继续随机
13         while (row == originalRow) {
14             row = arc4random() % foods.count;
15         }
16        
17         // 通知pickerView改变选择
18         [self.pickerView selectRow:row inComponent:i animated:YES];
19        
20         // 改变显示区
21         [self pickerView:self.pickerView didSelectRow:row inComponent:i];
22     }
23 }
 
bubuko.com,布布扣
 
 
 

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

标签:style   blog   http   ar   io   color   os   使用   sp   

原文地址:http://www.cnblogs.com/hellovoidworld/p/4167295.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!