iOS pickerView
#import "ViewController.h" @interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate> @property (nonatomic,strong)NSArray *foods; //显示水果 @property (weak, nonatomic) IBOutlet UILabel *fruitLabel; //显示主食 @property (weak, nonatomic) IBOutlet UILabel *mainLabel; //显示饮料 @property (weak, nonatomic) IBOutlet UILabel *drinkLable; @property (weak, nonatomic) IBOutlet UIPickerView *pickerView; //随机 - (IBAction)radom:(id)sender; //确认 - (IBAction)certain:(id)sender; //取消 - (IBAction)cancel:(id)sender; @end @implementation ViewController //懒加载数组 -(NSArray *)foods{ if (_foods==nil) { _foods=[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"foods" ofType:@"plist"]]; } return _foods; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. for (int i=0; i<3; i++) { [self pickerView:nil didSelectRow:0 inComponent:i]; } } //总共多少列 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ return self.foods.count; } //总共多少行 -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ NSArray *subFood=self.foods[component]; return subFood.count; } //第component列第row行显示文字内容 -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ return self.foods[component][row]; } //选中第component列第row行 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ //选中行的文本显示对应的Label if(component==0){ self.fruitLabel.text=self.foods[component][row]; }else if(component==1){ self.mainLabel.text=self.foods[component][row]; }else if(component==2){ self.drinkLable.text=self.foods[component][row]; } } //设置行高 -(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{ return 35; } //随机一份套餐 - (IBAction)radom:(id)sender { for (int component=0;component<self.foods.count;component++){ //第compnent列数组的总长度 int count=(int)[self.foods[component]count]; //旧的行号 int oldRow=(int)[self.pickerView selectedRowInComponent:component]; //第几行,默认旧行号与新行号相同 int row=oldRow; //保证行号与上次不一样 while(row==oldRow){ row=arc4random()%count; } //让pickerView主动选中第compoent列的第row行 [self.pickerView selectRow:row inComponent:component animated:YES]; //设置label的文字 [self pickerView:nil didSelectRow:row inComponent:component]; } } - (IBAction)certain:(id)sender { //提示用户点餐成功 UIAlertController *alertC=[UIAlertController alertControllerWithTitle:@"点餐成功" message:@"请稍后..." preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *certain=[UIAlertAction actionWithTitle:@"好的" style:UIAlertActionStyleDefault handler:nil]; [alertC addAction:certain]; [self presentViewController:alertC animated:YES completion:nil]; } - (IBAction)cancel:(id)sender { //直接初始化 for(int i=0;i<3;i++){ [self pickerView:nil didSelectRow:0 inComponent:i]; [self.pickerView selectRow:0 inComponent:i animated:YES]; } } @end