开发者

UIPicker accessing items from a plist

开发者 https://www.devze.com 2023-03-24 04:06 出处:网络
I have a plist that is being loaded into a UIPickerView. I can access the array info and have it loaded into the picker in one of the co开发者_运维技巧mponents. What I\'m trying to do is to access Ite

I have a plist that is being loaded into a UIPickerView. I can access the array info and have it loaded into the picker in one of the co开发者_运维技巧mponents. What I'm trying to do is to access Item 0 or Item 1 and have them displayed on a UILabel based on a condition.

I can't figure out how to access Item 0 or Item 1 (the string values). Any tips on how I'd go about doing this? thanks for the help.

here's an image to clarify what I'm talking about:

UIPicker accessing items from a plist


pickerViewcontroller.h

#import <UIKit/UIKit.h>
#define kStateComponent 0
#define kZipComponent 1

    @interface PickerViewController : UIViewController
    <UIPickerViewDataSource,UIPickerViewDelegate>{
        IBOutlet UIPickerView *dpicker;
        NSDictionary *stateZip;
        NSArray *states;
        NSArray *zips;

    }
    @property (nonatomic,retain) UIPickerView *dpicker;
    @property (nonatomic,retain) NSDictionary *stateZip;
    @property (nonatomic, retain) NSArray *states;
    @property (nonatomic, retain) NSArray *zips;
    @end

pickerViewcontroller.m

#import "PickerViewController.h"


@implementation PickerViewController
@synthesize dpicker;                  
@synthesize stateZip;
@synthesize states;
@synthesize zips;


-(void) viewDidLoad{

    NSBundle *bundle = [NSBundle mainBundle];

    NSString *plistPath =[bundle pathForResource:@"plistfilename" ofType:@"plist"];

    NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
    self.stateZip=dictionary;
    [dictionary release];


    NSArray *component = [self.stateZip allKeys];
    NSArray *sorted =[component sortedArrayUsingSelector:@selector(compare:)];
    self.states=sorted;


            NSString *selectedState = [self.states objectAtIndex:0];
        NSArray *array = [stateZip objectForKey:selectedState];
    self.zips = array;


}




#pragma mark -
#pragma mark Memory management

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Relinquish ownership any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
    // For example: self.myOutlet = nil;
}

- (void)dealloc {
    [dpicker release];
    [stateZip release];
    [states release];
    [zips release];
    [super dealloc];
}
#pragma mark-
#pragma mark picker Data Source Methods
-(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerview
{
    return 2;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    if (component == kStateComponent)

        return [self.states count];

    return [self.zips count];
}
#pragma mark picker delegate Methods
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row
           forComponent:(NSInteger)component
{


    if(component == kStateComponent)

        return[self.states objectAtIndex:row];



    return [self.zips objectAtIndex:row];

}
-(void)pickerView:(UIPickerView *)pickerView  didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
        if(component == kStateComponent)
    {

        NSString *selectedState = [self.states objectAtIndex:row];
        NSArray *array=[stateZip objectForKey:selectedState];
        self.zips=array;
        [dpicker selectRow:0 inComponent:kZipComponent animated:YES];
        [dpicker reloadComponent:kZipComponent];
    }
}


@endhere
0

精彩评论

暂无评论...
验证码 换一张
取 消