(素材源码)猫猫学IOS(二十)UI之UIPickerView_点菜系统

猫猫分享,必须精品

素材代码地址:http://download.csdn.net/detail/u013357243/8596279

原创文章,欢迎转载。转载请注明:翟乃玉的博客

地址:http://blog.csdn.net/u013357243?viewmode=contents

先看效果图 ##

代码

//
//  NJViewController.m
//  01-点菜
//
//  Created by apple on 14-6-3.
//  Copyright (c) 2014年 heima. All rights reserved.
//

#import "NJViewController.h"

@interface NJViewController ()<UIPickerViewDataSource, UIPickerViewDelegate>
@property (weak, nonatomic) IBOutlet UIPickerView *pickerView;
/**
 *  随机按钮点击事件
 */
- (IBAction)randomFood:(UIButton *)sender;
/**
 *  所有食物
 */
@property (nonatomic, strong) NSArray *foods;
/**
 *  水果
 */
@property (weak, nonatomic) IBOutlet UILabel *fruitLabel;
/**
 *  主菜
 */
@property (weak, nonatomic) IBOutlet UILabel *stapleLabel;
/**
 *  饮料
 */
@property (weak, nonatomic) IBOutlet UILabel *drinkLabel;

@end

@implementation NJViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // 设置默认选中的内容
//    self.fruitLabel.text = self.foods[0][0];
//    self.stapleLabel.text = self.foods[1][0];
//    self.drinkLabel.text = self.foods[2][0];

//    [self pickerView:nil didSelectRow:0 inComponent:0];
//    [self pickerView:nil didSelectRow:0 inComponent:1];
//    [self pickerView:nil didSelectRow:0 inComponent:2];

    for (int component = 0; component < self.foods.count; component++) {
        [self pickerView:nil didSelectRow:0 inComponent:component];
    }
}

#pragma mark - UIPickerViewDataSource
// 返回pickerView一共有多少列
- (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
//    return 3;
    return self.foods.count;
}

// 返回pickerView的第component列有多少行
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
//    return 4;
    // 1.获取对应列的数组
    NSArray *subFoods = self.foods[component];
    // 2.返回对应列的行数
    return subFoods.count;
}

#pragma mark - UIPickerViewDelegate
// 返回第component列的第row行显示什么内容
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    // 1.获取对应列的数组
    NSArray *subFoods = self.foods[component];
    // 2.获取对应行的标题
    NSString *name = subFoods[row];
    return name;
}

// 当选中了pickerView的某一行的时候调用
// 会将选中的列号和行号作为参数传入
// 只有通过手指选中某一行的时候才会调用
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
//    NSLog(@"component = %d, row = %d", component, row);
    // 1.获取对应列对应行的数据
    NSString *name = self.foods[component][row];
//    NSLog(@"name = %@", name);

    // 2.判断选择的是哪一列, 根据列号设置对应的数据
    if (0 == component) {
        // 水果
        self.fruitLabel.text = name;
    }else if (1 == component)
    {
        // 主菜
        self.stapleLabel.text = name;
    }else
    {
        // 饮料
        self.drinkLabel.text = name;
    }
}

#pragma mark - 懒加载
- (NSArray *)foods
{

    if (_foods == nil) {
        NSString *fullPath = [[NSBundle mainBundle] pathForResource:@"foods.plist" ofType:nil];
        _foods = [NSArray arrayWithContentsOfFile:fullPath];
    }
    return _foods;
}
#pragma mark - 监听按钮点击
- (IBAction)randomFood:(UIButton *)sender {
    // 让pickerView主动选中某一行
    // 让pickerView选中inComponent列的Row行
//    [self.pickerView selectRow:1 inComponent:0 animated:YES];

    /*
    [self.pickerView selectRow: arc4random() % 12 inComponent:0 animated:YES];
     [self.pickerView selectRow: arc4random() % 15 inComponent:1 animated:YES];
     [self.pickerView selectRow: arc4random() % 10 inComponent:2 animated:YES];
     */

//    [self.foods objectAtIndex:0]; == self.foods[0];
//    [self.foods[0] count];

    /*
    // 根据每一列的元素个数生成随机值
    [self.pickerView selectRow: arc4random() % [self.foods[0] count] inComponent:0 animated:YES];
    [self.pickerView selectRow: arc4random() % [self.foods[1] count] inComponent:1 animated:YES];
    [self.pickerView selectRow: arc4random() % [self.foods[2] count] inComponent:2 animated:YES];
    */

    for (int component = 0; component < self.foods.count; component++) {
        // 获取对应列的数据总数
        int total = [self.foods[component] count];
        // 根据每一列的总数生成随机数(当前生成的随机数)
        int randomNumber = arc4random() % total;

        // 获取当前选中的行(上一次随机后移动到的行)
        int oldRow =  [self.pickerView selectedRowInComponent:0];
//        NSLog(@"oldRow = %d", oldRow);

        // 比较上一次的行号和当前生成的随机数是否相同, 如果相同重新生成
        while (oldRow == randomNumber) {
            randomNumber = arc4random() % total;
        }

        // 让pickerview滚动到某一行
        [self.pickerView selectRow: randomNumber inComponent:component animated:YES];

        // 通过代码选中某一行
        [self pickerView:nil didSelectRow:randomNumber inComponent:component];
    }
}
@end

ps:新建iOS交流学习群:304570962 可以加猫猫QQ:1764541256 或则微信znycat 让我们一起努力学习吧。

翟乃玉的博客

地址:http://blog.csdn.net/u013357243?viewmode=contents

时间: 2024-09-30 16:22:54

(素材源码)猫猫学IOS(二十)UI之UIPickerView_点菜系统的相关文章

(素材源码) 猫猫学IOS(十二)UI之UITableView学习(上)LOL英雄联盟练习

猫猫分享,必须精品 素材代码地址:http://download.csdn.net/detail/u013357243/8542789 原文地址:http://blog.csdn.net/u013357243?viewmode=contents 先看效果图 ps:新建iOS交流学习群:304570962 可以加猫猫QQ:1764541256 或则微信znycat 让我们一起努力学习吧. 原文:http://blog.csdn.net/u013357243?viewmode=contents

(素材源码)猫猫学IOS(十五)UI之曾经大热的打砖块小游戏

猫猫分享,必须精品 素材代码地址:http://download.csdn.net/detail/u013357243/8555567 原文地址:http://blog.csdn.net/u013357243?viewmode=contents !素材代码里面有我写的全部代码,注释齐全,方便学习 先看效果图 ps:新建iOS交流学习群:304570962 可以加猫猫QQ:1764541256 或则微信znycat 让我们一起努力学习吧. 原文:http://blog.csdn.net/u0133

(素材源码)猫猫学IOS(十四)UI之UITableView扩充_表格的修改_(增删移动)

猫猫分享,必须精品 素材代码地址:http://download.csdn.net/detail/u013357243/8544315 原文地址:http://blog.csdn.net/u013357243?viewmode=contents 先看效果图 ps:新建iOS交流学习群:304570962 可以加猫猫QQ:1764541256 或则微信znycat 让我们一起努力学习吧. 原文:http://blog.csdn.net/u013357243?viewmode=contents

(素材源码)猫猫学IOS(十八)UI之QQ聊天布局_键盘通知实现自动弹出隐藏_自动回复

猫猫分享,必须精品 素材代码地址:http://download.csdn.net/detail/u013357243/8585703 原文地址:http://blog.csdn.net/u013357243?viewmode=contents 先看图片 第一步完成tableView和Cell的架子的图 完善图片 键盘弹出设置后图片: 自动回复图: 粗狂的架子 tableView和Cell的创建 首相tableView为了学习方便就直接用stroyBoard拖拽了,包括一些学习意义不大的图片等等

(素材源码)猫猫学iOS(四十六)之网易彩票幸运大转盘

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 素材源码地址:http://download.csdn.net/detail/u013357243/8713827 效果 代码: NYWheel NYWheel.h // // NYWheel.h // 网易彩票幸运大转盘 // // Created by apple on 15-5-18. // Copyright (c)

(素材源码)猫猫学IOS(二十六)UI之iOS抽屉效果小Demo

猫猫分享,必须精品 素材代码地址:http://download.csdn.net/detail/u013357243/8635679 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 先看效果 源码 NYDrawViewController.h // // NYDrawViewController.h // 06-抽屉效果 // // Created by apple on 14-9-1. /

(素材源码)猫猫学IOS(三十五)UI之Quartz2D仿真支付宝手势解锁_代理获得密码。

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 源码:http://download.csdn.net/detail/u013357243/8669765 效果: 代码: NYLockView.h // // NYLockView.h // 手势解锁 // // Created by apple on 15-5-6. // Copyright (c) 2015年 znyca

(素材源码)猫猫学IOS(三十四)UI之Quartz2D画画板的实现

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 源码:http://download.csdn.net/detail/u013357243/8666923 效果: 代码: NYView NYView.h // // NYView.h // 画画板 // // Created by apple on 15-5-6. // Copyright (c) 2015年 znycat.

(素材源码)猫猫学IOS(三十六)UI之手势事件旋转_缩放_拖拽

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 源码:http://download.csdn.net/detail/u013357243/8671943 效果 完成一个图片的捏合缩放,拖拽,旋转动作. 代码:NYViewController.m // // NYViewController.m // 旋转_缩放_拖拽 // // Created by apple on 1

(素材源码)猫猫学IOS(四十一)UI之核心动画 两行代码搞定3D转场(做android的哭死)

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 源码素材地址:http://download.csdn.net/detail/u013357243/8677065 效果: 代码: #import "NYViewController.h" @interface NYViewController () @property (weak, nonatomic) IBOut