2012-07-16 111 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

相关问题