2014-02-13 72 views
1

我的应用程序有3个主要的导航控制器,每个都有自己的导航堆栈。
我想在这3个视图(导航控制器的视图)之间启用滑动。
但是,如果用户在其中一个导航(推另一个视图控制器)内我想禁用滚动到其他导航控制器,直到他将返回到根控制器。导航控制器顶部控制器之间滚动

到现在为止,这是我做过什么:
-I创建一个具有滚动视图作为子视图
-I创建者3个导航控制器容器控制器,增加他们的孩子到容器控制器,并加入自己的意见作为scrollview的子视图。

所以,现在我可以在这3个导航控制器之间滚动,但问题是当我在其中一个视图控制器中推入其他视图控制器时,我仍然可以向左/向右滚动到其他视图控制器。

我正在寻找这个问题的一些优雅的解决方案,而不是仅仅禁用/启用滚动在viewDidApear/viewDidDisapear

+0

什么是禁用/启用滚动的问题? 为您的3根控制器制作自定义类,并在其“viewDidApear/viewDidDisapear”中处理它看起来对我来说不是那么脏...... – KIDdAe

+0

viewDidAppear一直处于活动状态,因此您希望尽可能减少在其中放置的代码。 – Paulo

回答

0

尝试把代码中的NavigationController委托方法之一 - 请注意所有NavigationController.delegate应被设置为自我。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 

     if (viewController == RootviewController1 || viewController == RootvirewController2 || viewController = RootviewController3) { 
      scrollview.ScrollEnabled = YES; } 
    else { 
      scrollview.ScrollEnabled = NO; } 

return; 
}