0

我现在使用的代码不起作用,每次我加载它并在 UIPickerView 中滚动时,它都会自动使用“else”语句的值。

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
if ([pickerView selectedRowInComponent:0]) {
    [label setText:@"row1"];
}
if ([pickerView selectedRowInComponent:3]) {
    [label setText:@"row2"];
}
if ([pickerView selectedRowInComponent:4]) {
    [label setText:@"row3"];
}
else {
     [label setText:@"row else"];
}
}

我究竟做错了什么?

4

5 回答 5

1

尝试这个:

因为您在返回类型中使用 numberOfComponentsInPickerView = 1 。

那么,为什么要与 rowInComponent api 进行比较。

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

   if(row == 0)
     [label setText:@"row3"];

   else if(row == 1)
     [label setText:@"row3"];

   else if(row == 3)
     [label setText:@"row3"];

   else
     [label setText:@"other"]; // this line will be called when row will be 2 or >3
  }

有多少行 ——pickerView:numberOfRowsInComponent:方法。

于 2012-08-17T14:02:51.753 回答
0

您将所有条件都基于此方法的返回值:selectedRowInComponent它返回一个整数值。因为它返回该组件中选定行的索引,所以您的值可能是从 -1 到 X,X 是您在组件中拥有的行数。

如果您希望在其中一行上选择任何内容时更新文本,您需要查看您选择的行索引是否大于 -1,这意味着在您的选择器视图中实际选择了一行。

所以试试更像这样的东西:

if ([pickerView selectedRowInComponent:0] > -1) {
    [label setText:@"row1"];
}
else if ([pickerView selectedRowInComponent:3] > -1) {
    [label setText:@"row2"];
}
else if ([pickerView selectedRowInComponent:4] > -1) {
    [label setText:@"row3"];
}
else {
     [label setText:@"row else"];
}
于 2012-08-17T13:45:54.510 回答
0

使用与此类似的代码。

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

{
if (pickerView.tag==1)
  {
    if (row == 0)
    {
          [label setText:@"row1"];
    }

   else if (row == 1)
    {
         [label setText:@"row2"];

    }

   else if (row == 2)
    {
            [label setText:@"row3"];

    }
   else{
            [label setText:@"row else"];

       }
  }
}
于 2012-08-17T13:28:54.227 回答
0

与其创建许多 if 语句,不如尝试将 if 语句变成“else if”语句。

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:    (NSInteger)component {
if ([pickerView selectedRowInComponent:0]) {
    [label setText:@"row1"];
}
else if ([pickerView selectedRowInComponent:3]) {
    [label setText:@"row2"];
}
else if ([pickerView selectedRowInComponent:4]) {
    [label setText:@"row3"];
} 
else {
     [label setText:@"row else"];
}
}
于 2012-08-17T13:30:14.343 回答
0

原因是它不满足任何这些条件,selectedRowInComponent 返回一个 NSInteger,而不是布尔值。因此,您必须更新 if 条件以包含一个值,例如

 [selectedRowInComponent:1]==1
于 2012-08-17T13:39:39.860 回答