iOS-填充静态UIPickerView
我有一份个人资料表,作为iOS-填充静态UIPickerView,ios,objective-c,uipickerview,Ios,Objective C,Uipickerview,我有一份个人资料表,作为iOS应用程序注册过程的一部分 我想使用“下拉”菜单来显示诸如性别、标题、,DOB等。每个选择器的数据都是静态的-我将使用UIPickerView来实现-但我的问题是-我是否需要创建数组和数据委托来填充每个选择器,还是有一种更简单的方法来应用静态数据?没有委托你能做到吗?没有 没有阵列你能做到吗?是的,但你不应该 下面是一个没有数组的示例(来自) 但是,您真的应该只使用一个数组,这样可以更容易地读取和维护一个数组。如果要添加附加值,只需将其添加到数组中即可。不要在多个点中
iOS
应用程序注册过程的一部分
我想使用“下拉”菜单来显示诸如性别、标题、,DOB等。每个选择器的数据都是静态的-我将使用UIPickerView来实现-但我的问题是-我是否需要创建数组和数据委托来填充每个选择器,还是有一种更简单的方法来应用静态数据?没有委托你能做到吗?没有 没有阵列你能做到吗?是的,但你不应该 下面是一个没有数组的示例(来自) 但是,您真的应该只使用一个数组,这样可以更容易地读取和维护一个数组。如果要添加附加值,只需将其添加到数组中即可。不要在多个点中更新,只需向数组中添加另一个值即可。而且,更容易理解
@implementation PickerViewController
.
.
- (void)viewDidLoad {
[super viewDidLoad];
_myArray = @[@"Row 1", @"Row 2", @"Row 3",];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component {
// Handle the selection
}
// tell the picker how many rows are available for a given component
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
NSUInteger numRows = 3;
return _myArray.count;
}
// tell the picker how many components it will have
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
// tell the picker the title for a given component
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
NSString *title;
title = myArray[row];
return title;
}
// tell the picker the width of each row for a given component
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
int sectionWidth = 300;
return sectionWidth;
}
如果有多个选择器,则只需使用多个数组并检查每个PickerView,以查看在将PickerView传递到列出的每个函数中后所使用的是哪一个
@implementation PickerViewController
.
.
- (void)viewDidLoad {
[super viewDidLoad];
_myArray1 = @[@"Row 1", @"Row 2", @"Row 3",];
_myArray2 = @[@"Row 1-2", @"Row 2-2", @"Row 3-2", @"Row 4-2"];
UIPickerView pickerView1 = [[UIPickerView alloc] init];
UIPickerView pickerView2 = [[UIPickerView alloc] init];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component {
// Handle the selection
if (pickerView == pickerView1)
{
// First Picker
}
else if (pickerView == pickerView2)
{
// First Picker
}
}
// tell the picker how many rows are available for a given component
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
if (pickerView == pickerView1)
{
// First Picker
return _myArray1.count;
}
else if (pickerView == pickerView2)
{
// Second Picker
return _myArray2.count;
}
// A third picker passed in somehow
return 0;
}
// tell the picker how many components it will have
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
if (pickerView == pickerView1)
{
// First Picker
return 1;
}
else if (pickerView == pickerView2)
{
// Second Picker
return 1;
}
// A third picker passed in somehow
return 0;
}
// tell the picker the title for a given component
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
NSString *title;
if (pickerView == pickerView1)
{
// First Picker
title = myArray1[row];
}
else if (pickerView == pickerView2)
{
// Second Picker
rtitle = myArray2[row];
}
return title;
}
// tell the picker the width of each row for a given component
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
if (pickerView == pickerView1)
{
// First Picker
return 300;
}
else if (pickerView == pickerView2)
{
// Second Picker
return 400;
}
// A third picker passed in somehow
return 0;
}
如果你在应用程序中多次需要它,你可以创建一个自定义类来实现UIPickerViewDataSource和UIPickerViewDelegate,该类将数组作为初始参数,并处理其余的internallycool cheers@ansible-我能不能在同一页面中对多个UIPicker使用array方法?@Dancer-是的-在中添加了一个示例我的回答是两个选择。同样的想法也适用于多个UITableView、UITextBox。。。在iOS中。
@implementation PickerViewController
.
.
- (void)viewDidLoad {
[super viewDidLoad];
_myArray1 = @[@"Row 1", @"Row 2", @"Row 3",];
_myArray2 = @[@"Row 1-2", @"Row 2-2", @"Row 3-2", @"Row 4-2"];
UIPickerView pickerView1 = [[UIPickerView alloc] init];
UIPickerView pickerView2 = [[UIPickerView alloc] init];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component {
// Handle the selection
if (pickerView == pickerView1)
{
// First Picker
}
else if (pickerView == pickerView2)
{
// First Picker
}
}
// tell the picker how many rows are available for a given component
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
if (pickerView == pickerView1)
{
// First Picker
return _myArray1.count;
}
else if (pickerView == pickerView2)
{
// Second Picker
return _myArray2.count;
}
// A third picker passed in somehow
return 0;
}
// tell the picker how many components it will have
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
if (pickerView == pickerView1)
{
// First Picker
return 1;
}
else if (pickerView == pickerView2)
{
// Second Picker
return 1;
}
// A third picker passed in somehow
return 0;
}
// tell the picker the title for a given component
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
NSString *title;
if (pickerView == pickerView1)
{
// First Picker
title = myArray1[row];
}
else if (pickerView == pickerView2)
{
// Second Picker
rtitle = myArray2[row];
}
return title;
}
// tell the picker the width of each row for a given component
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
if (pickerView == pickerView1)
{
// First Picker
return 300;
}
else if (pickerView == pickerView2)
{
// Second Picker
return 400;
}
// A third picker passed in somehow
return 0;
}