2010-06-24 162 views
0

問題的描述如下:應用程序崩潰

我有一個觀點,說,鑑於A.要進入某些數據,我有一個警報,以裏面的文本框,彈出。一旦用戶將數據輸入到文本字段,我有一個alertView:didDismissWithButtonIndex:功能如下:

- (void)alertView:(UIAlertView *)alertView:didDismissWithButtonIndex:(NSInteger)buttonIndex { 

    [ amountEntered resignFirstResponder];   //dismiss keyboard 

    if (buttonIndex == 1) {       //OK clicked, do something 

     if(lblShowTypedText.text) 

      data.investmentAmount = lblShowTypedText.text ; 

     [myTable reloadData]; 
    } 
} 

然後,我有我的觀,點擊它彈出回到先前的觀點,當一個提交按鈕。這是我的應用崩潰的地方。有在控制檯沒有消息,然而,許多運行後,我得到了一個消息是這樣的:

* - [NSCFType alertView:didDismissWithButtonIndex:]:無法識別的選擇發送到實例0x3c4dce0 2010-06-24 15:33 :22.970 BankingAppln [2895:207] CoreAnimation:忽略異常:* - [NSCFType alertView:didDismissWithButtonIndex:]:無法識別的選擇發送到實例0x3c4dce0

因此我已經縮小的問題到alertView:didDismissWithButtonIndex:功能。如果我不調用警報,但直接回到以前的視圖,一切都很好。

我必須在alertView:didDismissWithButtonIndex:函數中做錯事。

請幫忙!!

+0

如果以調試模式運行,它應該立即停在崩潰點,並且堆棧跟蹤會指出您遇到問題。此外,調用-viewWillAppear:很可能是一個錯誤。這不是你打電話的方法。這是一個你重寫的方法... – Eiko 2010-06-24 09:28:59

+0

我打電話給viewWillAppear,因爲我想在主視圖中的顯示更新,因爲用戶已經輸入它在textfield ..所以我的viewWillAppear包含[myTable reloadData] ..是否有一個沒有調用viewWillAppear的替代方法? – shrikanth 2010-06-24 09:35:46

+0

感謝您指出,我沒有viewWillAppear ..我仍然得到應用程序崩潰,與我張貼 – shrikanth 2010-06-24 10:49:50

回答

0

你真的有這種方法,alertView:didDismissWithButtonIndex:,在你的課堂上?並張貼代碼,當你調用它,以及

+0

以上同樣的錯誤是的,該功能是在我的課堂..我也從來沒有打電話給方法,它是否在警報中單擊適當的按鈕時不會被調用?對不起,如果我錯了,但我是Iphone開發新手。我基本上想要做的是當數據輸入到警報的文本字段中,然後單擊確定,我想要存儲此數據並將其顯示在視圖中。 – shrikanth 2010-06-24 09:41:25

+0

一旦用戶將數據輸入到文本字段中,我有一個alertView:didDismissWithButtonIndex:功能如下: (無效)alertView:(UIAlertView中*)alertView clickedButtonAtIndex:(NSInteger的)buttonIndex { 這些線讓我迷惑,你的功能不alertView:didDismissWithButtonIndex :,則alertView:clickedButtonAtIndex。你真的可以發佈函數alertView:didDismissWithButtonIndex嗎?該函數被調用是因爲你的類是UIAlertView代表 – vodkhang 2010-06-24 09:51:58

+0

對於這個錯誤感到抱歉,我正在搞亂這兩種方法。我的方法只有didDismissWithButtonIndex。我已經將UIAlertView委託包含在我的課程中。正如Eiko指出的,我刪除了對viewWillAppear的調用,並且我的函數看起來如上所述。 – shrikanth 2010-06-24 10:53:33

1

有幾件事情要檢查:

  • 您的AlertView的委託設置爲正確的類(查看A)?
  • 你的類(視圖A)實現了UIAlertViewDelegate協議。
  • 可能不是,但你永遠不知道:你的classname不等於蘋果的私人api中的名字(不要笑,一週前發生在我身上,花了我2​​個小時才弄清楚)?

編輯: 另一件事來檢查:

  • 你的委託方法有正確的返回類型(我想在這種情況下的「空白」)?
+0

我檢查了你說的所有內容,它們都可以。 – shrikanth 2010-06-25 03:53:38

+0

比我想我們需要更多的代碼。 – dalind 2010-06-25 12:16:28

0

您需要張貼您調用方法的位置..但是您提供的錯誤消息,問題是您正在錯誤地調用您的方法。

,如果它是你自己定義與執行上述使用

[self alertView:myAlertView didDismissWithButtonIndex:myIndex]; 

也是一個方法,在你的宣言,你有一個分號參數alertView之後,你只需要一個空間。

0

我遇到了類似的問題,事實證明,使用自動引用計數,我需要保留對屬性的引用作爲屬性,以便它不會被引用收集。這很好,但我過分熱心,並開始做明確的東西,如popup = nil;,這讓我陷入困境,因爲彈出窗口的一些委託方法是在我沒有提及我所持有的引用之後調用的,現在這個彈出窗口已經不在了,由於這個小事實,框架崩潰了。

[__NSCFString alertView:didDismissWithButtonIndex:]: unrecognized selector sent to instance 0x9117c0 

因此,我決定只是在需要時繼續分配一個新的彈出窗口,而不是明確地刪除舊的引用。這解決了我的問題。