01、UIPickerView-案例1

随机点餐案例
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];
    }
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值