如何将数据从plist拉到UIPickerView?

时间:2011-04-08 16:39:23

标签: iphone plist uipickerview

请帮助提供有关如何将数据从plist提取到UIPickerView的教程?

3 个答案:

答案 0 :(得分:0)

对你有用。

 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];
    }
}


@end

答案 1 :(得分:0)

enter image description here

enter image description here

答案 2 :(得分:0)

您可以使用CNSivakumr的代码创建这样的plist!

[plistfilename.plist] [1]

[1]:http://i.stack.imgur.com/zVrSe.png/Users/satishmishra/Desktop/Screen拍摄2013-04-03 at 12.27.24 PM.png