UIPickerView实现省 市 区三级联动

前几天用UIPickerView实现了一下三级联动具体的如下图

点击打开链接

下面是实现方式

#import "ViewController.h"

#define FirstComponent 0

#define SubComponent 1

#define ThirdComponent 2

@interface ViewController ()

@property(nonatomic,retain)NSDictionary* dict;

@property(nonatomic,retain)NSArray* pickerArray;

@property(nonatomic,retain)NSArray* subPickerArray;

@property(nonatomic,retain)NSArray* thirdPickerArray;

@property(nonatomic,retain)NSArray* selectArray;

@end


@implementation ViewController

@synthesize dict=_dict;

@synthesize pickerArray=_pickerArray;

@synthesize subPickerArray=_subPickerArray;

@synthesize thirdPickerArray=_thirdPickerArray;

@synthesize selectArray=_selectArray;

- (void)viewDidLoad

{

    [superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    NSString* plistPath=[[NSBundle mainBundlepathForResource:@"Address" ofType:@"plist"];

    _dict=[[NSDictionary allocinitWithContentsOfFile:plistPath];

    self.pickerArray=[_dict allKeys];

    self.selectArray=[_dict objectForKey:[[_dict allKeysobjectAtIndex:0]];

   if ([_selectArray count]>0) {

        self.subPickerArray= [[self.selectArray objectAtIndex:0allKeys];

    }

    if ([_subPickerArraycount]>0) {

        self.thirdPickerArray=[[self.selectArray objectAtIndex:0objectForKey:[self.subPickerArray objectAtIndex:0]];

    }


    

    

}


- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


#pragma mark --

#pragma mark--UIPickerViewDataSource

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

{

   return3;

}


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

{

   if (component==FirstComponent) {

       return [self.pickerArray count];

    }

   if (component==SubComponent) {

       return [self.subPickerArray count];

    }

   if (component==ThirdComponent) {

        return [self.thirdPickerArray count];

    }

   return0;

}



#pragma mark--

#pragma mark--UIPickerViewDelegate

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

{

   if (component==FirstComponent) {

       return [self.pickerArray objectAtIndex:row];

    }

   if (component==SubComponent) {

       return [self.subPickerArray objectAtIndex:row];

    }

   if (component==ThirdComponent) {

       return [self.thirdPickerArray objectAtIndex:row];

    }

    return nil;

}

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

{

    NSLog(@"row is %d,Component is %d",row,component);

   if (component==0) {

        self.selectArray=[_dict objectForKey:[self.pickerArray objectAtIndex:row]];

       if ([self.selectArray count]>0) {

            self.subPickerArray= [[self.selectArray objectAtIndex:0allKeys];

        }else{

           self.subPickerArray=nil;

        }

       if ([self.subPickerArraycount]>0) {

            self.thirdPickerArray=[[self.selectArray objectAtIndex:0objectForKey:[self.subPickerArray objectAtIndex:0]]; 

        }else{

            self.thirdPickerArray=nil;

        }

        [pickerView selectedRowInComponent:1];

        [pickerView reloadComponent:1];

        [pickerView selectedRowInComponent:2];

        

        

    }

   if (component==1) {

        if ([_selectArraycount]>0&&[_subPickerArraycount]>0) {

            self.thirdPickerArray=[[self.selectArray objectAtIndex:0objectForKey:[self.subPickerArray objectAtIndex:row]];

        }else{

            self.thirdPickerArray=nil;

        }

        [pickerView selectRow:inComponent:animated:YES];

        

    }

    

    

    [pickerView reloadComponent:2];

    

}




- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component

{

   if (component==FirstComponent) {

       return90.0;

    }

   if (component==SubComponent) {

       return120.0;

    }

   if (component==ThirdComponent) {

       return100.0;

    }

   return0;

}

-(void)dealloc

{

   self.dict=nil;

   self.pickerArray=nil;

   self.subPickerArray=nil;

   self.thirdPickerArray=nil;

    self.selectArray=nil;

    [superdealloc];

}

@end


具体下载地址:http://download.csdn.net/detail/chen505358119/5430053

有什么问题请多多指教
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值