根据用户的输入更改UiPickerView值

时间:2013-05-27 11:23:07

标签: iphone ios objective-c xcode uipickerview

我想用UIPickerView进行评估,但我简单看不出如何解决这个问题......

此示例与我想要的类似,并且易于理解。我有两个简单的选择器,数字从0到10.然后我有一个文本字段,用户插入一个数字。

我想要的是当用户插入例如7,然后在其中一个选择器中选择一个数字时,如5,其他选择器移动到2,因此总和为7.与0相同和7,3和4.

基本上,如何根据之前插入的输入,根据所选的其他选择器值移动选择器。

非常感谢:)

3 个答案:

答案 0 :(得分:0)

尝试一下,假设您有两个UIPickerView,例如pickerview1pickerview2,那么您可以设置逻辑如下...

注1: - 如果您使用了不同的2 UIPickerView,请使用以下代码..

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    if (thePickerView == pickerview1) {
        if ([yourTextfield.text integerValue] > row) {
            int selectVal = [yourTextfield.text integerValue] - row ;
            [pickerview2 selectRow:selectVal inComponent:0 animated:YES];
        }
        else{
            int selectVal = row - [yourTextfield.text integerValue] ;
            [pickerview2 selectRow:selectVal inComponent:0 animated:YES];
        }
    }  
}

如果您在UITextField 7 中输入了值,然后选择pickerview1的值 5 然后选择其{{{ 1}}数字为row

此处当您从 7 中减去 4 后,您设置或选择的行号 3 > { 4,其值 2

注2: - 如果您使用了1 pickerview2和2个组件,请使用以下代码..

UIPickerView

所以你得到了你想要的确切输出..

我希望你明白了......

享受编码.. :)

答案 1 :(得分:0)

你这样添加数组并重新加载组件:

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    if (component == 0) {
        club=[[NSString alloc] initWithFormat:@"%@" , [Nations objectAtIndex:row]];
      [secondcomponearray addObject club];
        [pickerView reloadComponent:1];

}

答案 2 :(得分:0)

从此帖子修改的代码:find pair of numbers in array that add to given sum

下面的代码循环查找可能的对,加起来number(在文本字段中键入的数字),然后在选择器中选择数字等于对中的一个数字的行。该代码假定您的数据源包含从0到某些总数的数字,按升序排列。

NSInteger number = [[textField text] integerValue];

int i = 0;
int j = number-1
NSMutableArray *possiblePairs = [NSMutableArray array];
while(i < j){
   if (i + j == number) {
      possiblePairs[] = @[(i), @(j)];
   }
   else if (a[i] + a[j] <  number) i += 1;
   else if (a[i] + a[j] >  number) j -= 1;
}

[picker1 selectRow:[dataSource indexOfObject:@(i)] inComponent:0];
[picker2 selectRow:[otherDataSource indexOfObject:@(j)] inComponent:0];