2011-07-30 5 views
0

UIPickerView에로드되는 plist가 있습니다. 배열 정보에 액세스하여 구성 요소 중 하나의 선택기에로드했습니다. 내가하려는 일은 항목 0 또는 항목 1에 액세스하여 조건에 따라 UILabel에 표시되도록하는 것입니다.UIPicker는 plist에서 항목에 액세스합니다.

항목 0 또는 항목 1 (문자열 값)에 액세스하는 방법을 알 수 없습니다. 이 일을 어떻게하면 좋을지에 대한 정보가 있습니까? 도와 주셔서 감사합니다. 내가 항목 0에 접근 할 필요가

enter image description here

+0

을 여기

내가 무슨 말을하는지 명확히하기 위해 이미지의 또는 아이템 1을 조건에 기초하여 사전으로부터 추출한다. – hanumanDev

답변

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 
+0

감사합니다. plist에서 Item 0 또는 Item 1 (문자열 값)에 액세스하는 방법은 무엇입니까? ObjectAtIndex : 0의 문자열 값과 항목 1의 문자열 값을 가져 오려면 어떻게할까요? 감사합니다. – hanumanDev

+0

감사합니다. 다음 링크를 참조하십시오. -http : //stackoverflow.com/questions/5598183/how-to -pull-the-data-from-plist-to-uipickerview – ram

관련 문제