2012-10-30 106 views
0

我正在使用UIPickerView顯示問題的答案。如果用戶無法解決問題,那麼需要有一個按鈕來顯示正確的答案。我已經嘗試了下面,但應用程序崩潰。我如何自動滾動到正確的答案?單擊按鈕時自動滾動uipickerview

-(void)reveal { 

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

} 

編輯:是的,我只是想獲得它滾動到第一個答案在上面的例子:)

[ExcerciseController透露:]:無法識別的選擇發送到實例0x68398f0 2012- 10-30 14:57:21.673 English [20786:f803] *因未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:' - [ExcerciseController reveal:]:無法識別的選擇器已發送到實例0x68398f0' *第一次調用堆棧: (0x1397022 0x108ccd6 0x1398cbd 0x12fde D0 0x12fdcb2 0x1398e99 0x1f214e 0x1f20e6 0x298ade 0x298fa7 0x298266 0x2173c0 0x2175e6 0x1fddc4 0x1f1634 0x21a3ef5 0x136b195 0x12cfff2 0x12ce8da 0x12cdd84 0x12cdc9b 0x21a27d8 0x21a288a 0x1ef626 0x2c5d 0x2b85) 終止叫做拋出異常[切換處理20786螺紋0xf803]

+1

在這一天的這個時候很難猜測! –

+0

你發佈的代碼就是答案。在這種情況下,如果選擇器滾動到其他位置,並且在您調用此代碼時第一個對象將滾動到頂部。 –

+0

請檢查功能名稱..你叫透露? –

回答

0

myPickerView可能不是UIPickerView爲實例響應選擇器 - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated

或者您必須檢查方法reveal是如何被調用的。

+0

hazzar !!你導致正確的答案。我與透露調用:而不是透露 – user987723

+0

乾杯,祝你有美好的一天! –

0

請嘗試後崩潰描述,需要更多的代碼塊來回答吧:)

但只是嘗試下面的代碼

myPickerView.delegate = self; 
[myPickerView reloadAllComponents]; 
[myPickerView selectRow:0 inComponent:0 animated:YES]; 
+0

添加上面的崩潰。也試過你的代碼,沒有工作:( – user987723

1

現在,錯誤/崩潰消息是可見的,事實證明錯誤不在於如何調用選擇器的方法。這是你如何調用reveal

你打電話與某些對象顯示。或者你通過傳遞一個選擇器來調用它。但是,您正在調用的當前選擇器是reveal:,但方法名稱是reveal,沒有任何參數。 reveal:將需要一個參數。

無論你怎麼稱呼它,請確保您撥打reveal而不是reveal:

我假設你設定的選擇無論是在界面生成器或以編程方式創建按鈕時。那是你犯了錯誤的地方。

一些背景: 錯誤消息告訴你你需要知道什麼。在運行時,方法名稱在Objective-C中稱爲選擇器。在一些文獻中,您會發現一條消息(在您的案例中命名爲reveal:)的字詞發送給您的案例中名爲ExcerciseController的接收器。

Objective-C是多晶型物。這意味着reveal(不帶任何參數調用)指的是另一種方法實現,比reveal:(用一個參數調用)或甚至reveal::(用三個參數調用)。