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を使用しているため。

それでは、なぜrowInComponentapiと比較しているのですか。

- (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

これに似たコードを使用します。

- (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 に答える
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 に答える