一 、UIPickerView是一个选择器件,外形如下:
二、UIPickerView代理:UIPickerViewDataSource、UIPickerViewDelegate 几个常用的代理方法如下:
// returns the number of 'columns' to display.
// 返回总共的列数
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
// returns the # of rows in each component..
// 返回对应列的行数
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:component;
// 返回指定行列的显示内容
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
// 选择某一项时调用
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;
三、几个常用的方法和属性
1、reloadComponent:(NSInteger) component; // 重新加载某一列
2、pickerView.showsSelectionIndicator = YES; // 显示选中框
四、上面程序的部分代码
//
// PickerViewController.m
// UIPickerViewDemo
//
// Created by on 13-5-14.
// Copyright (c) 2013年 *** *** iso学习 ***. All rights reserved.
//
#import "PickerViewController.h"
@interfacePickerViewController ()
@end
@implementation PickerViewController
NSArray *array;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
returnself;
}
- (void)viewDidLoad
{
[superviewDidLoad];
self.view.backgroundColor = [UIColororangeColor];
self.provArray = [NSArrayarrayWithObjects:@"广东", @"江西", nil];
self.cityArray1 = [NSArrayarrayWithObjects:@"深圳", @"广州", @"东莞", nil];
self.cityArray2 = [NSArrayarrayWithObjects:@"南昌", @"抚州", @"九江", @"赣州", nil];
array = self.cityArray1;
// Do any additional setup after loading the view.
UINavigationBar *navBar = [[[UINavigationBaralloc] initWithFrame:CGRectMake(0, 0, 320, 44)] autorelease];
UINavigationItem *navItems = [[[UINavigationItemalloc] init] autorelease];
UIBarButtonItem *backItem = [[[UIBarButtonItemalloc] initWithTitle:@"back"style:UIBarButtonItemStyleBorderedtarget:selfaction:@selector(backPressed)] autorelease];
[navItems setLeftBarButtonItem:backItem];
[navBar pushNavigationItem:navItems animated:YES];
[self.viewaddSubview:navBar];
self.pickerView = [[[UIPickerViewalloc] initWithFrame:CGRectMake(0, 44, 320, 100)] autorelease];
self.pickerView.dataSource = self;
self.pickerView.delegate = self;
self.pickerView.showsSelectionIndicator = YES;
[self.viewaddSubview:self.pickerView];
self.button = [UIButtonbuttonWithType:UIButtonTypeRoundedRect];
self.button.frame = CGRectMake(110, 220, 100, 40);
[self.buttonsetTitle:@"ok"forState:UIControlStateNormal];
[self.buttonaddTarget:selfaction:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:self.button];
self.label = [[[UILabelalloc] initWithFrame:CGRectMake(60, 280, 200, 40)] autorelease];
self.label.textAlignment = UITextAlignmentCenter;
[self.viewaddSubview:self.label];
}
- (void)buttonPressed
{
NSInteger prov = [self.pickerViewselectedRowInComponent:0];
NSInteger city = [self.pickerViewselectedRowInComponent:1];
self.label.text = [NSStringstringWithFormat:@"[%@ : %@]", [self.provArrayobjectAtIndex:prov], [arrayobjectAtIndex:city]];
}
- (void)backPressed
{
[selfdismissModalViewControllerAnimated:YES];
}
// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return [self.provArraycount];
}
// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (component == 0) {
return [self.provArraycount];
}
return [arraycount];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (component == 0) {
return [self.provArrayobjectAtIndex:row];
}
return [arrayobjectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (component == 0) {
if (row == 0) {
array = self.cityArray1;
} else {
array = self.cityArray2;
}
[self.pickerViewreloadComponent:1];
}
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)dealloc
{
[self.buttonrelease];
[self.labelrelease];
[self.provArrayrelease];
[self.cityArray1release];
[self.cityArray2release];
[self.pickerViewrelease];
[superdealloc];
}
@end