我有一个UI问题。最初我想要2个采摘器来填充2个不同的标签。问题是在ui上使用2个拾取器会占用窗口上的所有空间而你无法调整拾取器的大小。
我意识到,因为我在每个采集器中使用相同的数据,所以我应该能够使用一个选择器控件来逃避。除非控件的焦点没有正确完成,否则对用户来说会有点混乱。
我希望它有点像键盘出现在文本框中。
所以我有一个简单的用户界面
获取数据1:Textbox1 获取数据2:Textbox2
选择器
当用户在文本框1中单击时,将显示一个选择器而不是键盘,并使用选择器中的选定数据填充文本框。 textbox2也是如此。
有人可以给我一个如何实现这一目标的样本,或者更好的方法来解决这个问题吗?你们怎么处理在同一个窗口上有2个下拉菜单?
答案 0 :(得分:3)
如果您的文字不太长,那么包含两个组件和两个标签(或文本字段)的选择器是一个很好的解决方案。
已编辑添加
这是一个带有两个组件的选择器,我只是一起搅打。
进一步修改以添加
这里有一些代码可以告诉你它是如何完成的:
设置组件
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 2;
}
设置行
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
if (component == 0) {
return [array1 count];
} else {
return [array2 count];
}
}
提供行数据
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if (component == 0) {
return [array1 objectAtIndex:row];
} else {
return [array2 objectAtIndex:row];
}
}
根据选择器中的更改
更改标签- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
if (component == 0) {
label1.text = [array1 objectAtIndex:row];
} else {
label2.text = [array2 objectAtIndex:row];
}
}