在导航控制器顶部控制器之间滚动
Posted
技术标签:
【中文标题】在导航控制器顶部控制器之间滚动【英文标题】:Scroll between navigation controllers top controllers 【发布时间】:2014-02-13 17:12:55 【问题描述】:我的应用有 3 个主导航控制器,每个控制器都有自己的导航堆栈。 我想在这 3 个视图(导航控制器的视图)之间启用滑动。 但是,如果用户在其中一个控制器中导航(推另一个视图控制器),我想禁用滚动到其他导航控制器,直到他返回根控制器。
到目前为止,这是我所做的: -我创建了一个容器控制器,它具有滚动视图作为子视图 -我创建了这 3 个导航控制器,将它们作为子视图添加到容器控制器中,并将它们的视图添加为滚动视图的子视图。
所以现在我可以在这 3 个导航控制器之间滚动,但问题是当我在其中一个中推送另一个视图控制器时,我仍然可以向左/向右滚动到其他的。
我正在为这个问题寻找一些优雅的解决方案,而不仅仅是在 viewDidApear/viewDidDisapear 中禁用/启用滚动
【问题讨论】:
禁用/启用滚动有什么问题?为您的 3 个根控制器创建自定义类并在他们的viewDidApear/viewDidDisapear
中处理它对我来说似乎并不那么脏......
viewDidAppear 一直处于活动状态,因此您希望尽量减少放入其中的代码。
【参考方案1】:
尝试将代码放入 NavigationController 委托方法之一 - 请注意,您的所有 NavigationController.delegate 都应设置为 self。
- (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;
,
【讨论】:
以上是关于在导航控制器顶部控制器之间滚动的主要内容,如果未能解决你的问题,请参考以下文章