IOS第11天(1:UIPickerView点餐)
2015-08-19 15:48
603 查看
UIPickerView
#import "ViewController.h" @interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate> @property (nonatomic,strong)NSArray *foods; @property (weak, nonatomic) IBOutlet UILabel *fruitLabel; @property (weak, nonatomic) IBOutlet UILabel *mainFoodLabel; @property (weak, nonatomic) IBOutlet UILabel *drinkLabel; - (IBAction)randomMenu; @property (weak, nonatomic) IBOutlet UIPickerView *pickerView; @end @implementation ViewController -(NSArray *)foods{ if (!_foods) { NSString *filePath = [[NSBundle mainBundle] pathForResource:@"foods.plist" ofType:nil]; _foods = [NSArray arrayWithContentsOfFile:filePath]; } return _foods; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSLog(@"%@",self.foods); //默认选中数据,第一行数据 // [self pickerView:nil didSelectRow:0 inComponent:0]; // [self pickerView:nil didSelectRow:0 inComponent:1]; // [self pickerView:nil didSelectRow:0 inComponent:2]; NSInteger columns = self.foods.count; for (int i = 0; i < columns; i++) { [self pickerView:nil didSelectRow:0 inComponent:i]; } } #pragma mark UIPickerView数据源 #pragma mark 列数 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ return self.foods.count; } #pragma mark 每一列的行数 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ //获取每一列的数据 NSArray *items = self.foods[component]; //返回每一列的个数据 return items.count; } #pragma mark UIPickerView代理 -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ //获取每一列的数据 NSArray *items = self.foods[component]; //返回对应列的行的数据 return items[row]; } #pragma mark pickerView的选中 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ NSLog(@"component %ld row %ld",component,row); //获取数据 NSArray *items = self.foods[component]; NSString *rowStr = items[row]; //更改数据 switch (component) { case 0://水果 self.fruitLabel.text = rowStr; break; case 1://主食 self.mainFoodLabel.text = rowStr; break; case 2://饮料 self.drinkLabel.text = rowStr; break; default: break; } } #pragma mark 随机菜单,由天决定我们吃什么 - (IBAction)randomMenu { NSLog(@"xx"); // 1.获取每列有多少行 NSInteger columns = self.foods.count; for (int i = 0; i < columns; i ++) { NSArray *items = self.foods[i]; //对应列的行数 NSInteger rowsInColumn = items.count; // 2.在行范围产生随机数据 NSInteger randomRow =arc4random_uniform((int)rowsInColumn); //每列的随机行数不能与之前一样 // 获取旧的行数 NSInteger oldRow = [self.pickerView selectedRowInComponent:i]; while (oldRow == randomRow ) { randomRow =arc4random_uniform((int)rowsInColumn); } // 0.0~0.9 //arc4random_uniform(10) * 0.1 // 0.00~0.99 //arc4random_uniform(100) * 0.01 // 3.更改数据 // 3.1 更改label的数据 [self pickerView:nil didSelectRow:randomRow inComponent:i]; #warning 要改变PIckerview选中的行,要使用pickerview的一个方法 // 3.1 更改UIPickerView选中的数据 [self.pickerView selectRow:randomRow inComponent:i animated:YES]; } } @end
相关文章推荐
- 2015 Multi-University Training Contest 6 hdu 5357 Easy Sequence
- 【POJ 1019】 Number Sequence
- Call requires API level 3 (current min is 1)问题解决
- HDU 5400 Arithmetic Sequence
- iOS 在UILabel显示不同的字体和颜色
- UITextField UITextView隐藏键盘的方法
- iOS 在UILabel显示不同的字体和颜色
- EasyUI combobox--给combobox绑定值
- 关于百度编辑器UEditor(1.4.3)在C#.NET中的应用实例
- hdu1242 Rescue BFS广搜 + 优先队列
- UI学习之Label
- 电脑经验--Windows Server 2012 GUI与Core的切换 注意事项
- java Ant build.xml
- 电脑经验--bois用pe进不去,更改UEFI
- openwrt su : must be suid to work properly
- UINaviagtionBar 去除底部阴影的方法
- UIP协议栈六 WEB
- HDU 5400 Arithmetic Sequence(左d1等差右d2等差的区间个数)(枚举位置,求最大区间,算区间个数)
- HDU5400——Arithmetic Sequence
- UITableView 删除cell 的问题