2012-07-16 71 views
1

當用戶按下後退按鈕從活動的UINavigationController彈出當前的UIViewController時,我需要 - 在某些特殊情況下 - 以編程方式從同一個導航控制器中彈出另一個UIViewController(新的頂部)。 (沒有詳細說明,請相信我這不違反Apples的人機界面準則,相反,如果我不彈出額外的VC,它可能會違反準則)。額外的popViewControllerAnimated:當用戶按下後退按鈕?

我能想到的唯一的辦法是將一個popViewControllerAnimated:viewWillDisappear:,但不幸的是,這並不工作(即使我想彈出仍然是VC顯示爲self.navigationController.viewControllers的最後一個對象)。我在通話中嘗試了YES和NO。

我找不到一種方法來檢測VC何時會在viewWillDisappear:之前彈出,因爲UINavigationControllerDelegate沒有檢測VC什麼時候會彈出的行爲,只有在它將要被推送時纔會被彈出。

有沒有辦法做到這一點?

+0

因此,你試圖做的是在按下後退按鈕彈出第二個VC以回到第一個VC之後立即呈現/推第三個VC? – user523234 2012-07-16 15:58:25

+0

不需要。我想要的是當用戶在第三個VC中觸摸後退按鈕時,從第三個VC直接跳到第一個VC(正如我所說的,在這種情況下,這不違背Apple的HIG)。 – 2012-07-19 15:15:07

回答

1

在iOS5中有一些很好的新方法可以用來檢測你是否要彈出。

請參閱UIViewController Containment部分。

- (BOOL)isBeingPresented __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); 
- (BOOL)isBeingDismissed __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); 
- (BOOL)isMovingToParentViewController __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); 
- (BOOL)isMovingFromParentViewController __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); 
+0

謝謝。不幸的是,這些只是同步檢測方法,不幫助我。我需要一個代碼,當用戶觸摸後退按鈕時,在當前視圖控制器彈出之前,這些代碼是異步執行的。 – 2012-07-16 15:49:32

+0

你可以在viewWillDisappear中檢查。我以這種方式使用它。 – steipete 2012-07-16 15:57:12

+0

正如我所說,我曾嘗試viewWillDisappear。在viewWillDisappear中彈出一個VC什麼也不做。 – 2012-07-16 17:55:33

相關問題