您的位置:首页 > 产品设计 > UI/UE

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: