4

UIView に UIPickerView があります。そのプロトコルを .h ファイルに実装し、デリゲートを .m ファイルに実装しました。

 <UIPickerViewDataSource, UIPickerViewDelegate>

IB では、上記をピッカーに接続しました。これには IBoutlet もあります。メソッドは次のようになります。

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
return [self.arr count];
}

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row  forComponent:(NSInteger)component {
return @"test";
}

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
//do something
}

ピッカーを機能させるために欠落しているアイデアはありますか?

4

3 に答える 3

7

デリゲート メソッドが呼び出されない場合は、ピッカー ビューのデリゲートとデータソース アウトレットがファイルの所有者に接続されていることを IB で再確認します。

.h ファイルでは、ピッカー ビュー アウトレットを次のように宣言する必要があります。

@property (非アトミック、保持) IBOutlet UIPickerView *pickerView;

于 2010-05-02T20:24:44.657 に答える
3

デリゲートメソッドが呼び出されない理由であるUIPickerViewにデリゲートを割り当てていません。

 UIPickerView *pickerView;
 pickerView.delegate = self;//write this line in view did load method.

これがお役に立てば幸いです。これがあなたの質問に答えるかどうか教えてください。.:)

于 2012-12-18T13:05:36.350 に答える
1

場合によっては、ピッカービューがファイル所有者のデータソースに接続されておらず、nib で委任されていることが原因です。

于 2012-12-18T12:22:28.410 に答える