(素材源码)猫猫学IOS(二十)UI之UIPickerView_点菜系统
2015-04-15 11:50
531 查看
猫猫分享,必须精品
素材代码地址:http://download.csdn.net/detail/u013357243/8596279
原创文章,欢迎转载。转载请注明:翟乃玉的博客
地址:http://blog.csdn.net/u013357243?viewmode=contents
ps:新建iOS交流学习群:304570962 可以加猫猫QQ:1764541256 或则微信znycat 让我们一起努力学习吧。
翟乃玉的博客
地址:http://blog.csdn.net/u013357243?viewmode=contents
素材代码地址:http://download.csdn.net/detail/u013357243/8596279
原创文章,欢迎转载。转载请注明:翟乃玉的博客
地址:http://blog.csdn.net/u013357243?viewmode=contents
先看效果图 ##
代码
// // NJViewController.m // 01-点菜 // // Created by apple on 14-6-3. // Copyright (c) 2014年 heima. All rights reserved. // #import "NJViewController.h" @interface NJViewController ()<UIPickerViewDataSource, UIPickerViewDelegate> @property (weak, nonatomic) IBOutlet UIPickerView *pickerView; /** * 随机按钮点击事件 */ - (IBAction)randomFood:(UIButton *)sender; /** * 所有食物 */ @property (nonatomic, strong) NSArray *foods; /** * 水果 */ @property (weak, nonatomic) IBOutlet UILabel *fruitLabel; /** * 主菜 */ @property (weak, nonatomic) IBOutlet UILabel *stapleLabel; /** * 饮料 */ @property (weak, nonatomic) IBOutlet UILabel *drinkLabel; @end @implementation NJViewController - (void)viewDidLoad { [super viewDidLoad]; // 设置默认选中的内容 // self.fruitLabel.text = self.foods[0][0]; // self.stapleLabel.text = self.foods[1][0]; // self.drinkLabel.text = self.foods[2][0]; // [self pickerView:nil didSelectRow:0 inComponent:0]; // [self pickerView:nil didSelectRow:0 inComponent:1]; // [self pickerView:nil didSelectRow:0 inComponent:2]; for (int component = 0; component < self.foods.count; component++) { [self pickerView:nil didSelectRow:0 inComponent:component]; } } #pragma mark - UIPickerViewDataSource // 返回pickerView一共有多少列 - (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView { // return 3; return self.foods.count; } // 返回pickerView的第component列有多少行 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { // return 4; // 1.获取对应列的数组 NSArray *subFoods = self.foods[component]; // 2.返回对应列的行数 return subFoods.count; } #pragma mark - UIPickerViewDelegate // 返回第component列的第row行显示什么内容 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { // 1.获取对应列的数组 NSArray *subFoods = self.foods[component]; // 2.获取对应行的标题 NSString *name = subFoods[row]; return name; } // 当选中了pickerView的某一行的时候调用 // 会将选中的列号和行号作为参数传入 // 只有通过手指选中某一行的时候才会调用 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { // NSLog(@"component = %d, row = %d", component, row); // 1.获取对应列对应行的数据 NSString *name = self.foods[component][row]; // NSLog(@"name = %@", name); // 2.判断选择的是哪一列, 根据列号设置对应的数据 if (0 == component) { // 水果 self.fruitLabel.text = name; }else if (1 == component) { // 主菜 self.stapleLabel.text = name; }else { // 饮料 self.drinkLabel.text = name; } } #pragma mark - 懒加载 - (NSArray *)foods { if (_foods == nil) { NSString *fullPath = [[NSBundle mainBundle] pathForResource:@"foods.plist" ofType:nil]; _foods = [NSArray arrayWithContentsOfFile:fullPath]; } return _foods; } #pragma mark - 监听按钮点击 - (IBAction)randomFood:(UIButton *)sender { // 让pickerView主动选中某一行 // 让pickerView选中inComponent列的Row行 // [self.pickerView selectRow:1 inComponent:0 animated:YES]; /* [self.pickerView selectRow: arc4random() % 12 inComponent:0 animated:YES]; [self.pickerView selectRow: arc4random() % 15 inComponent:1 animated:YES]; [self.pickerView selectRow: arc4random() % 10 inComponent:2 animated:YES]; */ // [self.foods objectAtIndex:0]; == self.foods[0]; // [self.foods[0] count]; /* // 根据每一列的元素个数生成随机值 [self.pickerView selectRow: arc4random() % [self.foods[0] count] inComponent:0 animated:YES]; [self.pickerView selectRow: arc4random() % [self.foods[1] count] inComponent:1 animated:YES]; [self.pickerView selectRow: arc4random() % [self.foods[2] count] inComponent:2 animated:YES]; */ for (int component = 0; component < self.foods.count; component++) { // 获取对应列的数据总数 int total = [self.foods[component] count]; // 根据每一列的总数生成随机数(当前生成的随机数) int randomNumber = arc4random() % total; // 获取当前选中的行(上一次随机后移动到的行) int oldRow = [self.pickerView selectedRowInComponent:0]; // NSLog(@"oldRow = %d", oldRow); // 比较上一次的行号和当前生成的随机数是否相同, 如果相同重新生成 while (oldRow == randomNumber) { randomNumber = arc4random() % total; } // 让pickerview滚动到某一行 [self.pickerView selectRow: randomNumber inComponent:component animated:YES]; // 通过代码选中某一行 [self pickerView:nil didSelectRow:randomNumber inComponent:component]; } } @end
ps:新建iOS交流学习群:304570962 可以加猫猫QQ:1764541256 或则微信znycat 让我们一起努力学习吧。
翟乃玉的博客
地址:http://blog.csdn.net/u013357243?viewmode=contents
相关文章推荐
- (素材源码)猫猫学IOS(二十)UI之UIPickerView_点菜系统
- 猫猫学IOS(二十)UI之UIPickerView_点菜系统
- 猫猫学IOS(二十)UI之UIPickerView_点菜系统
- ios-day10-01(模仿点菜系统。UIPickerView的使用、如何产生随机数等)
- (素材源码)猫猫学IOS(八)UI之热门_喜马拉雅UI实现-UIScrollView的使用
- (素材源码)猫猫学IOS(八)UI之热门_喜马拉雅UI实现-UIScrollView的使用
- (素材源码)猫猫学IOS(十四)UI之UITableView扩充_表格的修改_(增删移动)
- (素材源码) 猫猫学IOS(十二)UI之UITableView学习(上)LOL英雄联盟练习
- (素材源码)猫猫学IOS(十四)UI之UITableView扩充_表格的修改_(增删移动)
- (素材源码)猫猫学IOS(九)UI之UIScrollView代理触摸实现_图片缩放
- (素材源码) 猫猫学IOS(十二)UI之UITableView学习(上)LOL英雄联盟练习
- (素材源码)猫猫学IOS(十三)UI之UITableView学习(下)汽车名牌带右侧索引
- iOS开发 点菜系统 使用UIPickerView
- AJ学IOS(20)UI之UIPickerView_点菜系统
- (素材源码)猫猫学IOS(九)UI之UIScrollView代理触摸实现_图片缩放
- (素材源码)猫猫学IOS(十三)UI之UITableView学习(下)汽车名牌带右侧索引
- iOS开发之UI控件——UIPickerView实现点菜系统界面布局
- (素材源码)猫猫学IOS(三十五)UI之Quartz2D仿真支付宝手势解锁_代理获得密码。
- (素材源码)猫猫学IOS(十五)UI之曾经大热的打砖块小游戏
- (素材源码)猫猫学IOS(十八)UI之QQ聊天布局_键盘通知实现自动弹出隐藏_自动回复