0

XCode 4.5、ストーリーボード、ARC、および iOS 6 で構築された iPad アプリがあります。2 つの UIDatePicker と 1 つの UIPickerView を備えた 1 つのコントローラーがあります。UIDatePicker は UIPickerView から派生しているため、タグを使用して numberOfRowsInComponent で UIPickerView を参照する必要があります?

私が尋ねている理由は、クリーンなビルドを取得しているためですが、次のnumberOfRowsInComponent (ブレークポイントを設定; 決してそこに到達しない) に到達する前に実行時エラーが発生するためです。

キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[ClientSetupViewController pickerView:numberOfRowsInComponent:]: 認識されないセレクターがインスタンス 0x8a89a10 に送信されました'

これは私に問題を与えるコードです (manArray.Count = 6);

-(NSInteger)pvMan:(UIPickerView *)pvMan numberOfRowsInComponent:(NSInteger)component  {

    return manArray.count;  //set number of rows
}
4

3 に答える 3

2

期待しているようです

-pickerView:numberOfRowsInComponent

それ以外の

-pvMan:numberOfRowsInComponent

それがどこかで定義されていて、それが呼び出されていない限り-pvMan:numberOfRowsInComponent:

于 2012-12-31T20:28:24.793 に答える
1

を実装していないため、その例外が発生していますpickerView:numberOfRowsInComponent:。を実装しpvMan:numberOfRowsInComponent:ました。UIPickerView dataSource残念ながら、実装するかどうかは問題ではありませんpvMan:numberOfRowsInComponent:。次のようにする必要があります。

-(NSInteger)pickerView:(UIPickerView *)pvMan numberOfRowsInComponent:(NSInteger)component  {
    return manArray.count;  //set number of rows
}

ピッカーは 1 つしかないため、異なるピッカーを区別する必要はありませUIPickerViewdataSource。さらに、UIDatePickersサブクラスUIControl. UIDatePickerにはUIPickerViewprivateivarがありますが、あなたはその ではない (そしてこれからもそうならない) ためdataSource、これはあなたにとって重要ではありません。

于 2012-12-31T20:35:51.607 に答える
0

1) UIDatePicker は UIPicker のサブクラスではなく、Apple Docs によると、「UIPickerView から継承しません」。

2) したがって、 には応答しませんpickerView:numberOfRowsInComponent。@Property を介して適切な形式で NSDate オブジェクトを設定することにより、行を設定しdatePickerModeます。

3) その他の UIPickers の場合、UIPickerViewDataSource プロトコルを使用して行数を設定し、以下をサポートする必要があります。

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

関連するピッカーに正しい行数を指定します。正しい行数をピッカーに関連付ける方法は、その時点でどのピッカーが要求しているかを知ることです。*pickerView求めている を評価することでそれを行います。

于 2012-12-31T20:36:20.227 に答える