如果将其视图添加到UIViewContoller,则UINavigationContoller向后滑动功能不起作用

时间:2014-04-04 03:31:49

标签: iphone ios7 uinavigationcontroller swipe

我有一个UIViewController(RootViewController)设置为UIWindow的根视图控制器。 任何视图/视图控制器都添加到此RootViewController子视图中,包括UINavigationController。

我发现iOS7中有一个UINavigationController的新行为,你可以刷回到上一个视图控制器。但它对我的情况并不起作用。

如果我将UINavigationController设置为UIWindow的根视图控制器。它有效。

所以我的问题是,如果它被添加到UIViewController中,它为什么不能刷回来?

更新
事实证明,如果导航栏被隐藏,则滑动功能将被禁用....

1 个答案:

答案 0 :(得分:1)

这可能与未正确设置视图控制器包含有关。我打赌当你将导航控制器的视图作为子视图添加到-viewDidLoad的{​​{1}}时,导航控制器的视图控制器上没有调用UIWindow。关于如何正确设置自定义视图控制器包含,以便正确的方法触发视图控制器,有很多文献:

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

此外,如果Apple使用转换API进行此交互,则可能与导航控制器的委托未正确连接有关(就像在UIWindow上将导航控制器设置为根视图控制器时那样)或者父视图控制器窃取/隐藏手势。我先来看一下导航控制器的pop手势委托,看看它是不是rootViewController

nil

如果它不是NSLog(@"%@", self.navigationController.interactivePopGestureRecognizer.delegate); 那么我会检查导航控制器上的手势识别器是否可以正常启动:

nil