iOS学习笔记—— UIPickerView 控件的简单使用

UIPickerView 是iOS常用的控件之一,它通过轮转界面提供一系列多值选项,它向用户展示信息,也能收集用户输入。下面是一个普通的UIPickerView控件。

使用UIPickerView控件需要遵守两种协议,一种是UIPickerViewDelegate,另一种是UIPickerViewDataSource

UIPickerViewDelegate协议的方法有:

1.  -(NSString *) pickerView: (UIPickerView * )pickerView

titleForRow: (NSInteger) row

forComponent: (NSInterger) component

该方法根据指定的行号返回该行的标题。

2.  -(void) pickerView: (UIPickerView *)pickerView

didSelectRow: (NSInteger)row

inComponent: (NSInteger)component

当用户选择某个row时,picker view调用此函数

3.  - (CGFloat) pickerView:(UIPickerView *)pickerView

rowHeightForComponent: (NSInteger) component

由picker view调用,当其在绘制row内容,需要row的高度时

4.  - (CGFloat)pickerView: (UIPickerView *)pickerView

widthForComponent:(NSInteger) component

当picker view 需要row的宽度时,调用此函数

5.  - (UIView *)pickerView: (UIPickerView *)pickerView

viewForRow:(NSInteger) row

forComponent:(NSInteger) component

reusingView:(UIView *) view

当picker view需要给指定的component.row指定view时,调用此函数.返回值为用作row内容的view

UIPickerViewDataSource协议的方法有:

1.  -(NSInteger) numberOfComponentslnPickerView: (UIPickerView *) pickerView

该方法返回UIPickerView需要多少个组件(有多少列)。

2.  -(NSInteger) pickerView: (UIPickerView *) pickerView

numberOfRowsInComponet: (NSInteger) component

该方法返回指定组件包含多少行。

常用方法:

1.  - (NSInteger) numberOfRowsInComponent:(NSInteger)component

返回指定的component中行数

2.  -(void) reloadAllComponents

重新载入所有新数据

3.  -(void) reloadComponent: (NSInteger) component

重新载入指定列的数据

4.  -(CGSize) rowSizeForComponent: (NSInteger) component

返回值为给定列的行大小, 通过调用委托方法中的pickerView:widthForComponent:和pickerView:rowHeightForComponent:获得返回值

5.  -(NSInteger) selectedRowInComponent: (NSInteger) component

返回指定列被选中行的序号,若无row被选中,则返回-1

6.  -(void) selectRow: (NSInteger)row

inComponent: (NSInteger)component

animated: (BOOL)animated

在代码指定要选择的某component的某row

参数animated 若为YES,转动spin到你选择的新值;若为NO,直接显示你选择的值

7.  -(UIView *) viewForRow: (NSInteger)row

forComponent: (NSInteger)component

返回由委托方法pickerView:viewForRow:forComponentreusingView:指定的view.如果委托方法未实现,或者说这个view并不是可见的,则返回nil

示例代码:

text.h

@interface TBLViewController : UIViewController
<UIPickerViewDataSource, UIPickerViewDelegate>
{
    NSArray *firstTypes;
    NSArray *secondTypes;
}

@property (strong, nonatomic) IBOutlet UIPickerView *pickerView;

- (IBAction)Sure:(id)sender;
@end

text.m

- (void)viewDidLoad<span style="white-space:pre">				</span>// 初始化
{
    [super viewDidLoad];

    firstTypes = [[NSArray alloc] initWithObjects:@"hello", @"hi", @"how are u", nil];
    secondTypes = [[NSArray alloc] initWithObjects:@"Zhao", @"Qian", @"Sun", @"Li", @"Zhou", @"Wu", @"Zheng", @"Wang", nil];
    pickerView.delegate = self;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

- (IBAction)Sure:(id)sender {<span style="white-space:pre">			</span>// 显示选中信息
    NSInteger first = [pickerView selectedRowInComponent:0];<span style="white-space:pre">		</span>// 选中的行数
    NSInteger second = [pickerView selectedRowInComponent:1];

    NSString* firstString = [firstTypes objectAtIndex:first];<span style="white-space:pre">		</span>// 选中行的信息
    NSString* secondString = [secondTypes objectAtIndex:second];

    NSString* message = [NSString stringWithFormat:@"Your chooise is %@ && %@", firstString, secondString];

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Chooise Information" message:message delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
    [alert show];
}

#pragma mark -
#pragma mark Picker Data Source Methed
- (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView {<span style="white-space:pre">	</span>// 返回列数
    return 2;
}
- (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{<span style="white-space:pre">		</span>// 返回该列行数
    if (component == 0) {
        return [firstTypes count];
    }
    else{
        return [secondTypes count];
    }
}

#pragma mark Picker Delegate Methods
- (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{<span style="white-space:pre">	</span>// 返回该行标题
    if (component == 0) {
        return [firstTypes objectAtIndex:row];
    }
    else{
        return [secondTypes objectAtIndex:row];
    }
}

@end
时间: 07-20

iOS学习笔记—— UIPickerView 控件的简单使用的相关文章

iOS学习笔记—— UItableView 控件的简单使用

UITableView 可以说是iOS开发中最常用的控件,除了游戏之外,几乎所有的应用中独会出现他的身影. 使用UITableView控件需要遵守两种协议 UITableViewDelegate和 UITableViewDataSource. 常用方法如下: 1.返回(每个分区)表单元个数(行数) - (NSInteger) tableView: (UItableView *) tableVIew numberOfRowsInSection: (NSInteger)section 2.返回表单元

ios 学习笔记之控件属性

1.文本框 设置密码属性:Secure Text Entry 勾选; 设置文本框带清除属性: Clear Button =Is always visible;  默认是不带清除属性:Never appears 设置文本框默认带出文字属性:Placeholder=用户自定义输入; 设置文本框键盘用户输入完成隐藏代码: [self.text resignFirstResponder];//适用于单个文本框输入完成时隐藏 [self.view endEditing:YES];//适用于全部文本框输入完

十三、Android学习笔记_Andorid控件样式汇总

<!-- 设置activity为透明 --> <style name="translucent"> <item name="android:windowBackground">@color/translucent</item> <item name="android:windowIsTranslucent">true</item> <item name="an

Android学习笔记_75_Andorid控件样式汇总

<!-- 设置activity为透明 --> <style name="translucent"> <item name="android:windowBackground">@color/translucent</item> <item name="android:windowIsTranslucent">true</item> <item name="an

android菜鸟学习笔记12----Android控件(一) 几个常用的简单控件

主要参考<第一行代码> 1.TextView: 功能与传统的桌面应用开发中的Label控件相似,用于显示文本信息 如: 1 <TextView 2 3 android:layout_width="wrap_content" 4 5 android:layout_height="wrap_content" 6 7 android:textColor="#0000ff" 8 9 android:textSize="40sp

android菜鸟学习笔记14----Android控件(三) ListView的简单使用

MVC模式: MVC的基本原理就是通过Controller连接View和Model.当View中所显示的数据发生变化时,会通知Controller,然后由Controller调用Model中的相关方法执行相应的数据修改操作.反之,当Model中的数据发生变化时,也会通知Controller,由Controller通知View更新显示内容.如此一来,就使得数据部分与视图部分相分离,任何一方发生改变都不会影响到另一方. 而在android中,MVC的一个常见应用就是ListView显示数据.V代表的

IOS开发学习笔记018-UIButton 控件

1.移动 2.动画 3.缩放 3.旋转 4.简化代码 5.总结 UIButton 的两种状态 normal highlighted  1.移动 OC语法规定:不允许直接修改某个对象中结构体属性的成员. 1 // 获取image控件的frame 2 CGRect rect = self.btnImage.frame; 3 //self.btnImage.frame.origin.y = 20; // 不能直接修改 4 // 更改Y的值,减小,如果减小到5则一直位5 5 rect.origin.y

iOS学习之UIDatePicker控件使用

iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式. ,   您可以选择自己需要的模式,Time, Date,Date and Time  , Count Down Timer四种模式. 本篇文章简单介绍下PickerDate控件的使用 1.新建一个Singe View Application,命名为DatePickDemo,其他设置如图 2.放置控件 打开ViewController.xib,拖拽一个DatePicker控件放到界面上,再拖拽一个Button控件放

iOS学习之基础控件

一.UILabel 1.UILabel(标签):是显示文本的空间.在App中UILabel是出现频率最高的控件. 2.UILabel是UIView的子类,作为子类一般是为了扩充父类的功能UILabel扩展了文字显示的功能,UILabel是能显示文字的视图. 3.创建UILabel 1 // 创建UILabel对象 2 UILabel *userNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(30, 100, 100, 30)]; 3 4