ios之自动拾取器

该博客介绍了如何在iOS应用中使用UIPickerView创建一个自动拾取器。通过加载plist文件并使用MJExtension库将数据转换为CityModel对象,实现了两列数据展示。当选择第一列时,第二列会自动更新对应的城市数据。示例代码详细展示了数据源和代理方法的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//

//  ViewController.m

//  自动拾取器

//

//  Created by 李江 on 16/5/4.

//  Copyright © 2016 李江. All rights reserved.

//


#import "ViewController.h"

#import "MJExtension.h"

#import "CityModel.h"


@interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>

{

    NSArray *dataArray;

   

}

@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    UIPickerView *pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 736-300, 414, 300)];

    pickerView.delegate  =self;

    pickerView.dataSource = self;

    pickerView.backgroundColor = [UIColor grayColor];

    NSString *path = [[NSBundle mainBundle]pathForResource:@"city" ofType:@"plist"];

    dataArray = [NSArray arrayWithContentsOfFile:path];

    //把数据类型转化为CityModel

    NSLog(@"%@",dataArray);

    dataArray = [CityModel mj_objectArrayWithKeyValuesArray:dataArray];

    [self.view addSubview:pickerView];

}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{

    return 2;

}


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

    if (component == 0) {

        return dataArray.count;

    }

    NSInteger selectRow = [pickerView selectedRowInComponent:component];

    CityModel *model = dataArray[selectRow];

    NSArray *cityArray = model.cities;

    return cityArray.count;

}

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

    if (component == 0) {

        CityModel *model = dataArray[row];

        return model.state;

    }

    NSInteger selectedRow = [pickerView selectedRowInComponent:0];

    CityModel *model = dataArray[selectedRow];

    return model.cities[row];

}

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

    if (component == 0) {

        [pickerView reloadAllComponents];

    }

}



*******

CityModel.h里面代码如下

@property(nonatomic,copy)NSArray *cities;

@property(nonatomic,copy)NSString *state;


plist文件格式


运行效果





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值