2014-02-20 417 views
-1

我在一個視圖控制器中有兩個按鈕,他們都推一個視圖控制器,問題是當我在同一時間點擊兩個按鈕時,該應用會崩潰並給我錯誤:同時推兩個視圖控制器

nested push animation can result in corrupted navigation bar 2014-02-20 15:11:35.540 TestPush[1147:60b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.

我應該如何推一個視圖控制器。

+1

我不明白這樣做的目的是什麼?如果你已經知道你想跳過第一個,爲什麼不直接推送到第二個控制器?如果你需要同時加載,那麼推送到firstViewController並在ViewViewController的ViewDidAppear中push到secondViewController? –

+0

用戶可能會點擊多個按鈕,我無法控制它,而且我認爲推動相對視圖控制器的用戶體驗不僅僅是第一個或最後一個按鈕的視圖控制器。 – fairzy

+0

所以你實際上想取消第一次點擊?這聽起來像你正在做一些可能在某些「等待時間」中掛起應用程序的東西,並且在應用程序推到第一個控制器之前需要一些時間?我對嗎? –

回答

2

通過兩個按鈕IBAction方法加入這一行再試一次:

[self.view setUserInteractionEnabled:NO]; 

,並在同一類的viewWillAppear補充一點:

[self.view setUserInteractionEnabled:YES]; 

這將阻止用戶交互的任何按鈕得到挖掘。

+0

但我看到一個應用程序,它推動一個視圖控制器,然後它完成後,它自動推第二個視圖控制器,你有任何想法如何做到這一點? – fairzy

+1

您可以立即調用兩者,但將第一次推動時將動畫設置爲「NO」。 或者調用第一個視圖控制器的'ViewDidLoad'中的第二次推送。 – Chicken

+0

雞是對的。這是實現這一目標的方法。在第一個視圖控制器的viewDidLoad被調用時,我已經在很多應用中使用了這兩種方式 –

1

如果你推的viewController不一樣當前的viewController類,前添加如下代碼做俯臥撐:

if(![self.navigationController.topViewController isKindOfClass:[self class]]) { 
     return; 
} 
相關問題