天天看點

UIPickerView簡單使用 - 點餐

1.先看視圖

UIPickerView簡單使用 - 點餐

2.拖線設定資料源和代理後,代碼如下:

//
//  ViewController.m

#import "ViewController.h"

@interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>

@property (weak, nonatomic) IBOutlet UIPickerView *pickerView;

@property(nonatomic,strong)NSArray *foods;

@property (weak, nonatomic) IBOutlet UILabel *frultLabel;
@property (weak, nonatomic) IBOutlet UILabel *mainLabel;
@property (weak, nonatomic) IBOutlet UILabel *drinkLabel;

@end

@implementation ViewController

/**
 *  随機
 */
- (IBAction)random
{
    // pickerView每一列随機選中一行
    for (int i=0; i<3; i++) {
        NSInteger count = [self.foods[i] count];
        int random = arc4random_uniform((u_int32_t)count);

        [_pickerView selectRow:random inComponent:i animated:YES];
        
        // 随機選中的文字展示到label
        [self pickerView:_pickerView didSelectRow:random inComponent:i];
    }
}


- (NSArray *)foods
{
    if (_foods == nil) {
        // 加載本地plist檔案
       NSString *filePath = [[NSBundle mainBundle] pathForResource:@"foods" ofType:@"plist"];
        // 從檔案中建立數組
       _foods =  [NSArray arrayWithContentsOfFile:filePath];
    }
    return _foods;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 初始化label資料
    for (int i = 0; i < 3; i++) {
        [self pickerView:_pickerView didSelectRow:0 inComponent:i];
    }
    
}

#pragma mark - UIPickerViewDataSource

/**
 *  傳回pickerView有多少列
 */
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return self.foods.count;
}

/**
 *  傳回第component列有多少行
 */
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return [self.foods[component] count];
}

#pragma mark - UIPickerViewDelegate
/**
 *  傳回第component列的第row行的标題
 */
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return self.foods[component][row];
}

/**
 *  選中了第component列的第row行的時候調用
 *  注意:這個方法必須使用者主動推動pickerView
 */
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
//    NSLog(@"%ld,%ld",component,row);
    switch (component) {
        case 0:
            _frultLabel.text = self.foods[component][row];
            break;
        case 1:
            _mainLabel.text = self.foods[component][row];
            break;
        case 2:
            _drinkLabel.text = self.foods[component][row];
            break;
    }
}


@end
           

3.示範效果

UIPickerView簡單使用 - 點餐