随机点餐案例
1、搭建界面
2、拖拽连线数据源和代理到控制器
3、懒加载数据
-(NSArray *)foods{
if(_foods==nil){
NSString *path=[[NSBundle mainBundle] pathForResource:@"foods.plist" ofType:nil];
_foods=[NSArray arrayWithContentsOfFile:path];
}
return _foods;
}
4、实现数据源方法
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 3;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [self.foods[component] count];
}
5、实现代理方法
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return self.foods[component][row];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
switch (component) {
case 0:
self.fruitLabel.text=self.foods[component][row];
break;
case 1:
self.mainFoodsLabel.text=self.foods[component][row];
break;
case 2:
self.drinkLabel.text=self.foods[component][row];
break;
default:
break;
}
}
6、默认选中第一行
- (void)viewDidLoad {
[super viewDidLoad];
for(int i=0; i<self.foods.count; i++){
[self pickerView:self.pickerView didSelectRow:0 inComponent:i];
}
}
7、给随机点餐设置点击事件
- (IBAction)clickRandomBtn:(id)sender {
for(int i=0; i<self.foods.count; i++){
//生成随机数
u_int32_t random=arc4random_uniform((int)[self.foods[i] count]);
//防止生成随机数和原来的行号相同不跳动的情况
NSUInteger selectRow=[self.pickerView selectedRowInComponent:i];
while (random==selectRow) {
random=arc4random_uniform((int)[self.foods[i] count]);
}
// 让pickerView选中数据
[self.pickerView selectRow:random inComponent:i animated:YES];
//更新label
[self pickerView:self.pickerView didSelectRow:random inComponent:i];
}
}