IOS學習:基本控件(UIPickerView)

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

     



發佈了44 篇原創文章 · 獲贊 56 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章