2011-10-25 33 views
2

我正面臨IOS 5中的以下語句崩潰。這似乎適用於其他IOS版本。這個場景是,我將視圖作爲一個來自viewController的模式呈現,然後點擊取消按鈕,我調用下面的代碼將自己視爲模態視圖。這項工作很好,直到這裏。在解除模態視圖的情況下在IOS 5中崩潰

但是在30秒後,我通過調用服務器來重新繪製視圖以獲取最新數據,並且當我點擊「取消」按鈕後再次繪製視圖後,我得到一個崩潰 - 僅在IOS 5.0上。任何線索?

[self dismissModalViewControllerAnimated:YES]; 

錯誤:

Single stepping until exit from function -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] 

這是錯誤的的線跡的截圖:

enter image description here

+0

我也有同樣的問題,因爲我認爲:http://stackoverflow.com/questions/11832981/dismissviewcontrolleranimated-crash-at-ios5 – 2012-08-07 15:59:56

回答

1

如果管理員允許我添加一個新評論(我最後一個被刪除),我可以解釋一下在我的情況發生。

link中有一些東西我認識到我做錯了。

呈現視圖時出現問題,但應用程序在關閉視圖時崩潰。現在,問題是什麼?在我的代碼中,我直接在popToRootViewControllerAnimated:call旁邊呈現視圖。正如你可以在我剛剛粘貼的鏈接中看到的那樣,在展示模態視圖時,iOS5似乎有一些限制。作爲鏈接的總結,你不能讓presentModalViewController:動畫:viewDidLoad中和viewWillAppear中前:完成:

It turns out that iOS guidelines don't want model view controllers to be presented in viewDidLoad or in viewWillAppear

這正是我的錯。如果這件事發生在你身上,你能做什麼?您可以在延遲後呈現模態視圖。因此,而不是使用這樣的:

[[self navigationController] popToRootViewControllerAnimated:NO]; 
[self presentModalViewController:loginNavController animated:YES]; 

你應該使用這樣的:

[[self navigationController] popToRootViewControllerAnimated:NO]; 
double delayInSeconds = 0.5; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    [self presentModalViewController:loginNavController animated:YES];; 
}); 

(我假設一個performSelector:afterDelay:也適用)...

,並確保delayInSeconds大足以讓viewDidLoad和viewWillAppear完成。對不起,如果這不是很準確和優雅,但至少它的作品。

問候。

+0

不幫我在:http://stackoverflow.com/questions/11832981/dismissviewcontrolleranimated-crash -at-ios5 – 2012-08-07 15:59:22

+0

你剛剛編輯的鏈接對我來說是一個死鏈接。 –

+0

@PaulCezanne似乎博客文章已被解僱。不過,我的答案是內容的摘錄。 –

0

是否有另一種參考控制器的地方?如果不是,那麼你解僱你的對象,但你仍然在其方法之一。

+0

我認爲他在做[self dismissModalViewControllerAnimated:YES];在父視圖控制器中,不在模態內。 我在幾個應用程序中遇到了同樣的問題,之前很好,現在在iOS 5上發生了一些類似於simlet的事情。 –

+0

我從我的模態視圖調用[self dismissModalViewControllerAnimated:YES]。直到我不重繪我的視圖,它才能正常工作。一旦查看重繪,它開始在這裏崩潰。它可以在IOS 5.0以外的所有IOS上正常工作。 – Abhinav

+0

@ArturOzierański你是對的,我的壞。但我仍然認爲這可能是一個殭屍問題。你有殭屍檢測啓用? – Sulthan

1

嘗試

[[super presentingViewController] dismissModalViewControllerAnimated:YES];

+0

這沒有幫助。 – Abhinav

+0

如果我試試這個,它不會工作,但如果我嘗試像這樣[[superpresentViewController] presentModalViewController:mailer animated:YES];它會工作,但仍然崩潰。 – Gaurav

+0

不幫助我:http://stackoverflow.com/questions/11832981/dismissviewcontrolleranimated-crash-at-ios5 – 2012-08-07 15:58:52

相關問題