我有一个UIViewController(RootViewController)设置为UIWindow的根视图控制器。 任何视图/视图控制器都添加到此RootViewController子视图中,包括UINavigationController。
我发现iOS7中有一个UINavigationController的新行为,你可以刷回到上一个视图控制器。但它对我的情况并不起作用。
如果我将UINavigationController设置为UIWindow的根视图控制器。它有效。
所以我的问题是,如果它被添加到UIViewController中,它为什么不能刷回来?
更新
事实证明,如果导航栏被隐藏,则滑动功能将被禁用....
答案 0 :(得分:1)
这可能与未正确设置视图控制器包含有关。我打赌当你将导航控制器的视图作为子视图添加到-viewDidLoad
的{{1}}时,导航控制器的视图控制器上没有调用UIWindow
。关于如何正确设置自定义视图控制器包含,以便正确的方法触发视图控制器,有很多文献:
此外,如果Apple使用转换API进行此交互,则可能与导航控制器的委托未正确连接有关(就像在UIWindow上将导航控制器设置为根视图控制器时那样)或者父视图控制器窃取/隐藏手势。我先来看一下导航控制器的pop手势委托,看看它是不是rootViewController
:
nil
如果它不是NSLog(@"%@", self.navigationController.interactivePopGestureRecognizer.delegate);
那么我会检查导航控制器上的手势识别器是否可以正常启动:
nil