2010-11-18 197 views
0

我在我的UINavigationController中有3個視圖控制器。如果我使用pushViewController和popViewController在視圖控制器之間切換,一切都會好起來的。導致運行時崩潰!

但是,如果我調用setViewControllers以重新排列它們的順序,當我觸摸向後導航欄按鈕時,我會崩潰。

[UIBarButtonItem performSelector:withObject:withObject]:message to deallocated instance。

原始堆棧是A和B,接下來我將A和C設置爲如下波紋管。我們可以通過下面的例子來說明如何使用這個控件來實現這個控件。

我發現奇怪的是...,如果我用動畫調用該方法:否,不會發生崩潰。

我的代碼的動畫參數的祕密是什麼?請幫助我... :(

回答

1

事實上,它只發生在動畫:是我認爲這是一個autorelease競爭條件。你是否用autorelease分配你的controllerC實例?如果是的話,嘗試避免並明確釋放它調用setViewControllers代替了。讓我知道是否能解決您的問題。

不能要求我完全理解這裏發生了什麼,但給這一個鏡頭。

-S

0

我同樣的問題,它肯定對我來說就像是一個iOS bug。爲我工作的解決方法是首先推動新視圖控制器:

[navigationController pushViewController:controllerC animated:YES]; 

然後視圖控制器的堆疊設置爲適當的值(消除之間的那些):

NSArray *newViewControllers = [NSArray arrayWithObjects:controllerA, controllerC, nil]; 
[navigationController setViewControllers:newViewControllers animated:NO]; 
+0

有點奇怪...,它隱藏leftBarButton導航控制器上。消失,但我可以觸摸它。無論如何,沒有崩潰。這個SDK到底是什麼? – 2010-11-19 15:28:18

+0

你找到任何解決方案嗎?如果是,請分享。我面臨着一個類似的問題。左欄按鈕消失但可以觸摸。 – Pria 2011-06-13 04:58:17