您的位置:首页 > 产品设计 > UI/UE

创建关联的UIPickerView 显示省市

2011-04-15 17:18 148 查看

创建关联的UIPickerView 显示省市

iPhone
2010-03-28 12:42:57
阅读225

评论2

字号:大



订阅

//
// DependentComponentPickerViewController.m
// Pickers
//
// Created by Jeff LaMarche on 7/7/08.
// Copyright 2008 __MyCompanyName__. All rights reserved.
//

#import
"DependentComponentPickerViewController.h"

@implementation
DependentComponentPickerViewController
@synthesize picker;

@synthesize
stateZips;
@synthesize states;

@synthesize zips;

- (IBAction
)butonPressed:(id
)sender
{

NSInteger
stateRow = [
picker

selectedRowInComponent:
kStateComponent
];

NSInteger
zipRow = [
picker

selectedRowInComponent:
kZipComponent
];

NSString
*state = [self
.states
objectAtIndex
:stateRow];

NSString
*zip = [self
.zips
objectAtIndex
:zipRow];

NSString
*title = [[
NSString

alloc
]
initWithFormat
:
@"You selected zip code %@.", zip];

NSString
*message = [[NSString
alloc
] initWithFormat
:@"%@ is in %@"
, zip, state
];

UIAlertView
*alert = [[
UIAlertView

alloc]
initWithTitle:title
message:message
delegate:
nil

cancelButtonTitle:
@"OK"

otherButtonTitles:
nil
];

[alert show
];

[alert release
];

[title release
];

[message release
];
}
- (id
)initWithNibName:(NSString
*)nibNameOrNil bundle:(NSBundle
*)nibBundleOrNil {

if
(self
= [super
initWithNibName
:nibNameOrNil bundle
:nibBundleOrNil]) {

// Initialization code

}

return
self;

}

- (void
)viewDidLoad {

NSBundle
*bundle = [NSBundle
mainBundle
];

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

NSDictionary
*dictionary = [[NSDictionary
alloc
] initWithContentsOfFile
:plistPath];

self
.stateZips
= dictionary;

[dictionary release
];

NSArray
*components = [self
.stateZips
allKeys
];

NSArray
*sorted = [components
sortedArrayUsingSelector:
@selector
(
compare:)];

self
.states
= sorted;

NSString
*selectedState = [self
.states
objectAtIndex
:0
];

NSArray
*array = [stateZips
objectForKey
:selectedState];

self
.zips
= array;
}

- (BOOL
)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation
)interfaceOrientation {

// Return YES for supported orientations

return
(interfaceOrientation ==
UIInterfaceOrientationPortrait);

}

- (void
)didReceiveMemoryWarning {

[
super

didReceiveMemoryWarning
];
// Releases the view if it doesn't have a superview

// Release anything that's not essential, such as cached data
}

- (void
)dealloc {

[
picker

release];

[
stateZips
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 = [stateZips
objectForKey
:selectedState];

self
.zips
= array;

[picker
selectRow:0
inComponent:kZipComponent
animated:YES
];

[
picker

reloadComponent:
kZipComponent
];

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

if
(component == kZipComponent
)

return
90
;

return
205
;

}
@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: