美文网首页
UIPickerView

UIPickerView

作者: 石玉龙 | 来源:发表于2016-11-06 16:52 被阅读26次

    UIPickerView的默认高度为162;

    显示数据需要设置数据源,也有两种方式:成为数据源、遵守协议;

    实现数据源的两个方法:多少列,一列有多少行;

    设置代理为控制器,实现某一列某一行的数据是什么;

    与UITableView的数据源协议和委托协议相似;

    贴代码了:

    - (void)initWithPickerViewOther

    {

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"freshFood.plist" ofType:nil];

    _foods = [NSArray arrayWithContentsOfFile:filePath];

    NSLog(@"_foods : %@", _foods);

    for (NSUInteger component = 0 ; component < _foods.count; component++)

    {

    [self pickerView:nil didSelectRow:0 inComponent:component];

    }

    NSLog(@"%@", _foods);

    }

    - (void)initWithPickerViewUI

    {

    UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(20, 100, [UIScreen mainScreen].bounds.size.width-40, 30)];

    [btn setTitle:@"随机" forState:UIControlStateNormal];

    [btn setBackgroundColor:[UIColor orangeColor]];

    [btn addTarget:self action:@selector(random:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:btn];

    _pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(20, 150, [UIScreen mainScreen].bounds.size.width-40, 162)];

    _pickerView.showsSelectionIndicator = YES;

    _pickerView.delegate = self;

    _pickerView.dataSource = self;

    [self.view addSubview:_pickerView];

    _fruitLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 320, [UIScreen mainScreen].bounds.size.width-40, 38)];

    _fruitLabel.textColor = [UIColor darkTextColor];

    _fruitLabel.font = [UIFont systemFontOfSize:18.0];

    [self.view addSubview:_fruitLabel];

    _stapleLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 368, [UIScreen mainScreen].bounds.size.width-40, 38)];

    _stapleLabel.textColor = [UIColor darkTextColor];

    _stapleLabel.font = [UIFont systemFontOfSize:18.0];

    [self.view addSubview:_stapleLabel];

    _drinkLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 416, [UIScreen mainScreen].bounds.size.width-40, 38)];

    _drinkLabel.textColor = [UIColor darkTextColor];

    _drinkLabel.font = [UIFont systemFontOfSize:18.0];

    [self.view addSubview:_drinkLabel];

    }

    - (void)random:(UIButton *)sender

    {

    NSLog(@"a");

    for (NSUInteger component = 0; component < _foods.count; component++)

    {

    NSUInteger total = [_foods[component] count];

    NSUInteger randomNumber = arc4random() % total;

    NSUInteger oldRow = [_pickerView selectedRowInComponent:0];

    while (oldRow == randomNumber)

    {

    randomNumber = arc4random() % total;

    }

    // 滑动到指定的每一行

    [_pickerView selectRow:randomNumber inComponent:component animated:YES];

    // 选中某一行

    [self pickerView:nil didSelectRow:randomNumber inComponent:component];

    }

    }

    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

    {

    return _foods.count;

    }

    - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

    {

    NSArray *array = [_foods objectAtIndex:component];

    return array.count;

    }

    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

    {

    NSArray *array = [_foods objectAtIndex:component];

    NSString *title = [array objectAtIndex:row];

    return title;

    }

    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

    {

    NSString *title = [[_foods objectAtIndex:component] objectAtIndex:row];

    if (0 == component)

    {

    _fruitLabel.text = [NSString stringWithFormat:@"您选择的水果是:%@", title];

    }

    else if (1 == component)

    {

    _stapleLabel.text = [NSString stringWithFormat:@"您选择的蔬菜是:%@", title];;

    }

    else

    {

    _drinkLabel.text = [NSString stringWithFormat:@"您选择的饮料是:%@", title];;

    }

    }

    相关文章

      网友评论

          本文标题:UIPickerView

          本文链接:https://www.haomeiwen.com/subject/tyyguttx.html