ios-day10-01(模仿点菜系统。UIPickerView的使用、如何产生随机数等)

源码下载地址:http://download.csdn.net/detail/liu537192/8484707


效果图:



核心代码:

//
//  JLViewController.m
//  01-点菜系统
//
//  Created by XinYou on 15-3-9.
//  Copyright (c) 2015年 vxinyou. All rights reserved.
//

#import "JLViewController.h"

@interface JLViewController ()
    
    
     
     

@property (weak, nonatomic) IBOutlet UIPickerView *pickerView;
// 用于显示水果的label
@property (weak, nonatomic) IBOutlet UILabel *fruitLabel;
// 用于显示主菜的label
@property (weak, nonatomic) IBOutlet UILabel *mainLabel;
// 用于显示饮料的label
@property (weak, nonatomic) IBOutlet UILabel *drinkLabel;

// "随机"按钮
- (IBAction)randomFood;


@property (nonatomic, strong)NSArray *foods;
@end

@implementation JLViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // 设置数据源
    self.pickerView.dataSource = self;
    // 设置代理
    self.pickerView.delegate = self;
    
    for (int i = 0; i < self.foods.count; i++) {
        // 手动调用pickerView的代理方法
        [self pickerView:nil didSelectRow:0 inComponent:i];
    }
}

/**
 *  随机选择食物
 */
- (IBAction)randomFood {
    
    // arc4random() 这是C语言的方法,能产生大于或等于0的随机数
    
    for (int component = 0; component < self.foods.count; component++) {
        // 第component列数组的总长度
        int foodCount = [self.foods[component] count];
        
        // 上一次选中的行号
        int oldRow = [self.pickerView selectedRowInComponent:component];
        // 本次要选中的行号
        int newRow = oldRow;
        // 保证每次随机每一行都不一样
        while (newRow == oldRow) {
            newRow = arc4random() % foodCount;
        }
        // 让pickerView进行滚动,选中第compoent列的第row行
        [self.pickerView selectRow:newRow inComponent:component animated:YES];
        // 设置各个label的文字
        [self pickerView:nil didSelectRow:newRow inComponent:component];
    }
    
}

- (NSArray *)foods{

    if (_foods == nil) {
        // 获取plist文件的路径
        NSString *path = [[NSBundle mainBundle] pathForResource:@"foods.plist" ofType:nil];
        
        // 加载plist文件中的数据
        NSArray *foodArray = [NSArray arrayWithContentsOfFile:path];
     
        _foods = foodArray;
    }
    
    return _foods;
}

#pragma mark - 数据源方法
/**
 *  pickerView总共有多少列
 */
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{

    return self.foods.count;
}
/**
 *  pickerView每列各有多少行
 */
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{

    NSArray *food = self.foods[component];
    
    return food.count;
}

#pragma mark - 代理方法
/**
 *  pickerView每一行显示的字符串
 */
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

    NSArray *food = self.foods[component];
    
    return food[row];
}
/**
 *  选中了pickerView的某一行
 */
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{

    if (0 == component) {// 水果
        self.fruitLabel.text = self.foods[component][row];
    }else if (1 == component){// 主菜
        self.mainLabel.text = self.foods[component][row];
    }else if (2 == component){// 饮料
        self.drinkLabel.text = self.foods[component][row];
    }
    
    
}
@end

    
    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值