使用UI选择器控制2个不同的标签

时间:2011-04-12 01:41:29

标签: iphone ios4 iphone-sdk-3.0

我有一个UI问题。最初我想要2个采摘器来填充2个不同的标签。问题是在ui上使用2个拾取器会占用窗口上的所有空间而你无法调整拾取器的大小。

我意识到,因为我在每个采集器中使用相同的数据,所以我应该能够使用一个选择器控件来逃避。除非控件的焦点没有正确完成,否则对用户来说会有点混乱。

我希望它有点像键盘出现在文本框中。

所以我有一个简单的用户界面

获取数据1:Textbox1 获取数据2:Textbox2

选择器

当用户在文本框1中单击时,将显示一个选择器而不是键盘,并使用选择器中的选定数据填充文本框。 textbox2也是如此。

有人可以给我一个如何实现这一目标的样本,或者更好的方法来解决这个问题吗?你们怎么处理在同一个窗口上有2个下拉菜单?

1 个答案:

答案 0 :(得分:3)

如果您的文字不太长,那么包含两个组件和两个标签(或文本字段)的选择器是一个很好的解决方案。

已编辑添加

这是一个带有两个组件的选择器,我只是一起搅打。

UIPickerView with two components

进一步修改以添加

这里有一些代码可以告诉你它是如何完成的:

设置组件

- (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];
    }
}