2014-03-26 150 views
1

我有一個用戶輸入電子郵件信息後按下的按鈕。我有一個警報視圖,當沒有輸入電子郵件時顯示,但如果存在,我想讓按鈕繼續到另一個視圖控制器。performSegueWithIdentifier:導致應用程序崩潰

以下代碼會導致我的應用崩潰。我不知道爲什麼。請幫忙。

(注:我已經試過「發件人:自我]」「發件人:無]」和「發件人:發送者]」,他們都讓我的應用程序崩潰。)

- (IBAction)nextButtonPushed:(id)sender { 

    if ([self.emailTextField.text isEqual: @""]) { 

     emailAlertView = [[UIAlertView alloc] initWithTitle:@"Missing Email" message:@"A destination email is required to send." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
     [emailAlertView show]; 
     self.nextButton.enabled = NO; 
    } 

    else { 

     eString = self.eTextField.text; 
     hString = self.hField.text; 
     emailAddress = self.emailTextField.text; 

     [userDefaults setObject:eString forKey:@"e"]; 

     [userDefaults setObject:hString forKey:@"h"]; 

     [userDefaults setObject:emailAddress forKey:@"email"]; 

     [self performSegueWithIdentifier:@"next" sender:self]; 
    } 

} 
+1

您能否顯示錯誤消息。 – Larme

+0

***由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'Receiver()沒有標識符'next'的繼續' ***第一次拋出調用堆棧: (等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等) 的libC++ abi.dylib:與類型NSException – digimortal

+1

的未捕獲的異常你在故事板創建SEGUE並將其命名爲「下一個」終止? – Larme

回答

4

有三個壓倒性的可能可能性:

  • 也許故事板確實沒有從FirstViewController場景中出現名爲「next」的segue。注意:空格和大寫以及類似的事情。

  • 也許故事板上有一個名爲「next」的segue,但它出現在不同的場景(一個不同的視圖控制器)中。

  • 也許代碼中的self表示的FirstViewController實例可能與故事板中的FirstViewController實例不同,也就是說它可能以某種其他方式存在,而不是通過故事板實例化。你甚至可以在故事板中有兩個FirstViewController對象,而segue來自另一個。

+1

你最近的評論很有趣。我有這種罕見的隨機崩潰,這可能是由相同故事板對象的多個副本解釋。 Thanx,+1。 – JOM

3

如果視圖控制器無法從NIB加載,也會發生崩潰。例如,如果存在錯誤地命名的用戶定義的運行時屬性。

例如QBFlatButton改變今天他們的API和我的應用程序開始崩潰。這就是爲什麼我們使用語義版本:-)

+1

與此相關的確切「用戶定義的運行時屬性」可能是一個巨大的問題。你可以得到非常奇怪的效果,只有修復崩潰的方法是回退到故事板的早期版本。僅僅刪除用戶定義的運行時屬性通常仍會導致這種奇怪的崩潰。我會說這是Xcode中的一個普通錯誤。 – Fattie

4

一個偉大的方式找出爲什麼您的應用程序上線崩潰這樣是禁用你可能有任何斷點(包括異常斷點)。這會導致應用程序崩潰,並經常告訴你它崩潰的原因。通常情況下,你會得到錯誤的喜歡@馬特提到如您seques壞標識符(經常打字錯誤),在IB場景中的同一個對象多次,如以下幾點:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<YOURAPP.YOURVIEWCONTROLLER: 0x7c8951d0>) has no segue with identifier 'TheSequeIdentifierYouHaventSetYetOrTypedInWrong'' 
今天我的情況

或類似在那裏我得到這個錯誤:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<YOURAPP.YOURVIEWCONTROLLERYOUARETRYINGTOSHOW 0x78e5a140> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key "MyKeyOnTheOffendingObject" 

有一次,我知道我必須在我的故事板的對象與關鍵,它不應該有我所要做的就是追查按鈕/圖像/其他隨機配備的對象壞引用出口發送的事件和所有固定

經常performSequeWithIdentifier會出現在崩潰前顯示的最後一行,因爲這是顯示新View Controller時發現問題之前的最後一行 - 所以如果您確定問題不在於您的seque然後檢查你想要展示的VC的參考資料!

+1

這幫助我調試我的問題,因爲我被卡住了,認爲這是segue,但事實證明是故事板中的東西! – PruitIgoe