-1

最初の行をデフォルトとして選択しようとしています..ここで私は試しました

-(void)pickerViewLoaded{

   [pickerView setShowSelectionIndicator:YES];
   pickerView.delegate = self;
   [pickerView reloadAllComponents];
   [pickerView selectRow:1 inComponent:0 animated:YES]
}

didSelectRow メソッドを呼び出す viewDidLoad() でこのメソッドを呼び出すと正常に動作しますが、最初の行ではなくそのコンポーネントの 2 番目の行を選択しています。[pickerView selectRow:0 inComponent:0 animation:YES] で呼び出すと、didSelectRow メソッドは呼び出されません。

別の問題は、セグメント化されたコントロールの選択時に pickerViewLoaded メソッドを呼び出すと、didSelectRow メソッドが呼び出されないことです。私はまだviewDidLoadでいつ呼び出すことができるのか理解できませんでした。

皆さんありがとう、

4

3 に答える 3

2

古いスレッドのようですが、とにかく私は自分の経験を共有することを考えました.

同じ問題があり、移動しました

[pickerView selectRow:0 inComponent:0 animated:YES];

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;

selectRow:inComponent:animatedは、通知を使用して最後の行に対して呼び出された titleForRow を返した後にのみ呼び出します。

于 2011-05-20T12:21:53.007 に答える
1

私はちょうど同じ問題に遭遇し、それを理解しました:選択された行が変更されない場合、デリゲートは呼び出されません。また、行 0 は既定で選択されているため、行 0 を再度選択しviewDidLoadてもデリゲートはトリガーされません。私の場合、デリゲート メソッドを直接呼び出すことができました。おそらく、それがあなたの場合の解決策でもあります。

于 2012-03-03T20:35:16.103 に答える
1

疑問が死から提起された今...

selectRow は 1 ではなく 0 から始まるインデックスを使用していると思います。つまり、0 が最初の行で、1 が 2 番目の行です。

于 2011-05-20T12:26:23.853 に答える