作者:朱克锋
邮箱:zhukefeng@iboxpay.com
转载请注明出处:http://blog.youkuaiyun.com/linux_zkf
piker在IOS开发中有着广泛的应用,这里实现的是多组件的piker,实现piker需要遵从piker的数据源与代理协议
UIPickerViewDelegate, UIPickerViewDataSource
示例效果如图
头文件
#import <UIKit/UIKit.h>
#define F_C 0
#define S_C 1
@interface DoubleComponentPickerViewController : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource>
{
UIPickerView *doublePicker;
NSArray *upCaseTypes;
NSArray *lowCaseTypes;
}
@property(nonatomic, retain) IBOutlet UIPickerView *doublePicker;
@property(nonatomic, retain) NSArray *upCaseTypes;
@property(nonatomic, retain) NSArray *lowCaseTypes;
-(IBAction)buttonPressed;
@end
#import "DoubleComponentPickerViewController.h"
@implementation DoubleComponentPickerViewController
@synthesize doublePicker;
@synthesize upCaseTypes;
@synthesize lowCaseTypes;
-(IBAction)buttonPressed
{
NSInteger upCaseRow = [doublePicker selectedRowInComponent:
F_C];
NSInteger lowCaseRow = [doublePicker selectedRowInComponent:
S_C];
NSString *lowCase = [lowCaseTypes objectAtIndex:lowCaseRow];
NSString *upCase = [upCaseTypes objectAtIndex:upCaseRow];
}
- (void)viewDidLoad {
NSArray *upCaseArray = [[NSArray alloc] initWithObjects:@"A",
@"B", @"C", @"D",
@"E", @"F", @"G", nil];
self.upCaseTypes = upCaseArray;
[upCaseArray release];
NSArray *lowCaseArray = [[NSArray alloc] initWithObjects:@"a",
@"b", @"c", @"d", @"e",@"f", @"g",nil];
self.lowCaseTypes = lowCaseArray;
[lowCaseArray release];
}
#pragma mark -
#pragma mark Picker Data Source Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {
if (component == F_C)
return [self.lowCaseTypes count];
return [self.upCaseTypes count];
}
#pragma mark Picker Delegate Methods
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component {
if (component == S_C)
return [self.lowCaseTypes objectAtIndex:row];
return [self.upCaseTypes objectAtIndex:row];
}