iOS开发中使用Picker View实现一个点菜应用的UI示例

2020-01-14 19:02:56于海丽

        
        //比较上一次的行号和当前生成的随机数是否相同,如果相同的话则重新生成
        while (oldRow==randomNumber) {
                randomNumber=arc4random()%total;
        }
        
        //让pickerview滚动到指定的某一行
        [self.pickerView selectRow:randomNumber inComponent:component animated:YES];
        //模拟,通过代码选中某一行
        [self pickerView:nil didSelectRow:randomNumber inComponent:component];
    }
}

#pragma mark- 设置数据
//一共多少列
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return self.foods.count;
}

//每列对应多少行
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    //1.获取当前的列
    NSArray *arayM= self.foods[component];
    //2.返回当前列对应的行数
    return arayM.count;
}

//每列每行对应显示的数据是什么
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    //1.获取当前的列
    NSArray *arayM= self.foods[component];
    //2.获取当前列对应的行的数据
    NSString *name=arayM[row];
    return name;
}

#pragma mark-设置下方的数据刷新
// 当选中了pickerView的某一行的时候调用
// 会将选中的列号和行号作为参数传入
// 只有通过手指选中某一行的时候才会调用
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    //获取对应列,对应行的数据
    NSString *name=self.foods[component][row];
    //赋值
    if (0==component) {
        self.fruitLab.text=name;
    }else if(1==component)
    {
        self.stapleLab.text=name;