iphone – 如何在一个视图中使用一个UIPickerView用于多个文本字段?

iphone – 如何在一个视图中使用一个UIPickerView用于多个文本字段?,第1张

概述我在一个视图中有8个文本字段.我想使用pickerview填充每个. 我可以有1个选择器视图,它将显示不同文本字段的不同数组的不同项目列表吗? 有人可以解释如何使用示例代码以编程方式执行此 *** 作? 另外,如何在加载视图时隐藏选择器视图,只有当我单击带有相应数据列表的文本字段时才应显示它?当我选择数据时它应该消失,当我点击具有相应数据列表的不同文本字段时重新出现,等等. 我是xcode的新手.任何帮助 我在一个视图中有8个文本字段.我想使用pickervIEw填充每个.
我可以有1个选择器视图,它将显示不同文本字段的不同数组的不同项目列表吗?

有人可以解释如何使用示例代码以编程方式执行此 *** 作?

另外,如何在加载视图时隐藏选择器视图,只有当我单击带有相应数据列表的文本字段时才应显示它?当我选择数据时它应该消失,当我点击具有相应数据列表的不同文本字段时重新出现,等等.

我是xcode的新手.任何帮助都感激不尽.谢谢.

解决方法 根据某些条件,您只能使用一个显示不同数据的PickerVIEw.

我的想法如下:你可以创建8个不同的数组 – 一个用于填充UIPickerVIEw,具体取决于UITextFIEld被点击的内容.在接口中将它们声明为NSArray并在vIEwDIDLoad中初始化:

array1st = ...array2nd = ...array3d = ...//and until 8.

然后你创建另一个只是为了指向应该填充它的数组(如NSArray * currentArray),你甚至不需要初始化它=它将仅用于指向正确的数组.

因此,您应该将UITextFIElds的委托设置为视图控制器,并在方法textFIEldShouldBeginEditing中检查谁是UITextFIEld,将正确的数组指定为currentArray,使用reloadData重新加载UIPickerVIEw,并在相同的textFIEldShouldBeginEditing方法中返回NO. currentTextFIEld是一个指针,只知道被编辑的currentUITextFIEld是什么 – 我们需要存储它以便能够在选择器中选择数据后设置文本.在接口中声明currentTextFIEld.

- (BOol)textFIEldShouldBeginEditing:(UITextFIEld *)textFIEld{    currentTextFIEld = textFIEld;    if (textFIEld == myFirstTextVIEw)    {        currentArray = array1st;        [pickerVIEw reloadData];        [self animatePickerVIEwIn];        return NO;    }    //and this way until 8th}

因此,当您的视图控制器(实际上是UIPickerVIEwDelegate)时,您根据当前数组填充UIPickerVIEw并且您不需要更改任何内容,只需使用currentArray作为数组来获取数据.

现在,要显示pickerVIEw:

连接IBOutlet后,在vIEwDIDLoad中你应该做两件事:设置UIPickerVIEw的框架并将其添加为子视图:

pickerVIEw.frame = CGRectMake(0,self.vIEw.frame.size.height,pickerVIEw.frame.size.wIDth,pickerVIEw.frame.size.height);pickerVIEw.delegate = self;pickerVIEw.dataSource = self;//or you can do it via Interface Builder,right click the pickerVIEw and then connect delegate and dataSource to the file's owner[self.vIEw addSubvIEw:pickerVIEw];

现在,您需要创建名为animatePickerVIEwIn的方法,我们在用户点击UITextFIEld时调用该方法.

-(voID)animatePickerVIEwIn{    [UIVIEw animateWithDuration:0.25 animations:^{        [pickerVIEw setFrame:CGRectMake(0,pickerVIEw.frame.origin.y-pickerVIEw.frame.size.height,pickerVIEw.frame.size.height)];    }];}

要在pickerVIEw中加载数据:

-(NSInteger)pickerVIEw:(UIPickerVIEw *)pickerVIEw numberOfRowsInComponent:(NSInteger)component{    return [currentArray count];}-(NSInteger)numberOfComponentsInPickerVIEw:(UIPickerVIEw *)pickerVIEw{    return 1;}-(Nsstring*)pickerVIEw:(UIPickerVIEw *)pickerVIEw TitleForRow:(NSInteger)row forComponent:(NSInteger)component{    return [currentArray objectAtIndex:row];}

当用户选择pickerVIEw中的行时,您将收到它作为委托方法.因此,只需将currentTextFIEld的文本设置为所选值:

-(voID)pickerVIEw:(UIPickerVIEw *)pickerVIEw dIDSelectRow:(NSInteger)row inComponent:(NSInteger)component{    //and here you can do in two ways:    //1    [currentTextFIEld setText:[currentArray objectAtIndex:row]];    //2    [currentTextFIEld setText:[self pickerVIEw:pickerVIEw TitleForRow:row inComponent:component]];}
总结

以上是内存溢出为你收集整理的iphone – 如何在一个视图中使用一个UIPickerView用于多个文本字段?全部内容,希望文章能够帮你解决iphone – 如何在一个视图中使用一个UIPickerView用于多个文本字段?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1060450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存