0

質問に対する回答を表示するために UIPickerView を使用しています。ユーザーが正解を見つけられない場合に、正解を表示するボタンが必要です。以下を試しましたが、アプリがクラッシュします。正しい答えに自動スクロールするにはどうすればよいですか?

-(void)reveal {

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

}

編集:はい、上記の例の最初の回答までスクロールしようとしています:)

[ExcerciseController 公開:]: 認識されないセレクターがインスタンス 0x68398f0 に送信されました 2012-10-30 14:57:21.673 英語[20786:f803] * キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: '-[ExcerciseController 公開:]: 認識されませんselector sent to instance 0x68398f0' * First throw call stack: (0x1397022 0x108ccd6 0x1398cbd 0x12fded0 0x12fdcb2 0x1398e99 0x1f214e 0x1f20e6 0x298ade 0x298fa7 0x298266 0x2173c0 0x2175e6 0x1fddc4 0x1f1634 0x21a3ef5 0x136b195 0x12cfff2 0x12ce8da 0x12cdd84 0x12cdc9b 0x21a27d8 0x21a288a 0x1ef626 0x2c5d 0x2b85) terminate called throwing an exception[Switching to process 20786スレッド 0xf803]

4

3 に答える 3

1

これで、エラー/クラッシュメッセージが表示されたので、ピッカーのメソッドを呼び出す方法にエラーがないことがわかります。それはあなたが呼び出す方法ですreveal

あるオブジェクトでrevealを呼び出します。または、セレクターを渡して呼び出します。ただし、呼び出している現在のセレクターはですreveal:が、メソッド名にはrevealパラメーターがありません。reveal:1つのパラメータが必要になります。

どこに電話する場合でも、電話するのではなく、電話するようにしてrevealくださいreveal:

インターフェイスビルダーで、またはプログラムでボタンを作成するときにセレクターを設定すると仮定します。それはあなたが間違いを犯した場所です。

背景:エラーメッセージは、知っておくべきことを示しています。メソッド名は、実行時にObjective-Cではセレクターと呼ばれます。いくつかの文献では、メッセージの文言(あなたのケースで名前が付けられreveal:ている)があなたのケースで名前が付けられた受信者に送信されることがわかりExcerciseControllerます。

Objective-Cは多形です。つまり、reveal(パラメーターなしで呼び出される)は、reveal:(1つのパラメーターで呼び出される)またはreveal::(3つのパラメーターで呼び出される)以外の別のメソッド実装を指します。

于 2012-10-30T15:06:40.080 に答える
0

クラッシュの説明を投稿してみてください。それに答えるには、さらにコードのブロックが必要です:)

ただし、以下のコードを試してください

myPickerView.delegate = self;
[myPickerView reloadAllComponents];
[myPickerView selectRow:0 inComponent:0 animated:YES];
于 2012-10-30T14:53:23.790 に答える
0

myPickerViewセレクターに応答するUIPickerViewasのインスタンスではない可能性があります-UIPickerView(void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated

または、メソッドがどのようにreveal呼び出されるかを確認する必要があります。

于 2012-10-30T15:04:42.537 に答える