UIPicker получает доступ к элементам из plist

У меня есть plist, который загружается в UIPickerView. Я могу получить доступ к информации о массиве и загрузить ее в средство выбора в одном из компонентов. Я пытаюсь получить доступ к элементу 0 или элементу 1 и отобразить их на UILabel в зависимости от условия.

Я не могу понять, как получить доступ к элементу 0 или элементу 1 (строковые значения). Любые советы о том, как я буду делать это? Спасибо за помощь.

вот изображение, чтобы прояснить, о чем я говорю:

введите здесь описание изображения


person hanumanDev    schedule 30.07.2011    source источник
comment
Мне нужно получить доступ к элементу 0 или элементу 1 из словаря на основе условия.   -  person hanumanDev    schedule 30.07.2011


Ответы (1)


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
person ram    schedule 30.07.2011
comment
спасибо за ваш пост как получить доступ к элементу 0 или элементу 1 (строковые значения) в plist. скажем, если бы я хотел получить строковое значение ObjectAtIndex:0 и строковое значение элемента 1. спасибо - person hanumanDev; 30.07.2011
comment
если вы получите полное представление, посмотрите эту ссылку: - stackoverflow.com/questions/5598183/ - person ram; 30.07.2011