一 、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