iOS pageviewcontroller 禁用滑动
Posted
技术标签:
【中文标题】iOS pageviewcontroller 禁用滑动【英文标题】:iOS pageviewcontroller disable swipe 【发布时间】:2014-12-22 06:51:42 【问题描述】:我有一个在 UIPageViewController 中有三个导航控制器的应用程序。
|-> Detail View
|-- nav 1 -> root view -|
| |-> Search View
UIPageViewController -|-- nav 2 -> root view
|
|-- nav 3 -> root view
Nav 1、2 和 3 都有从那里分支出来的视图。问题是,一旦我打开其中一个导航控制器的子视图,我仍然可以在 3 个单独的导航控制器之间滑动。如果我的导航控制器深度 > 1 层(详细信息或搜索视图),我想禁用滑动。
【问题讨论】:
【参考方案1】:为什么要有 3 个导航控制器?
将您的 PageViewController 放在 NavigationController 中。您不需要像这样禁用滑动手势。
但是如果你真的想要这个架构,你可以去掉数据源。没有dataSource
,pageViewController 不会滑动。再次设置dataSource以再次启用滑动。
// Methods of the data source are called in response to gesture-based navigation.
// If the value of this property is nil, then gesture-based navigation is disabled.
【讨论】:
因为所有三个视图都有一个导航栏。我希望每个视图都有一个导航栏。 如果我将dataSource
设置为nil
,我会收到此错误:*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: [views count] == 3'
这不应该发生...您是否在代码的某处创建了变量views
?否则,请考虑使用 WOW 解决方案。您可以将手势识别器保留在视图中,并将true
或false
设置为识别器的enabled
属性。
不确定发生了什么变化,但我在查看了 Apple 的文档后再次尝试了这个,并且成功了。谢谢!
要明确一点:我在我的prepareForSegue
函数中将dataSource
设置为nil
,然后在子viewWillAppear
中将其重置回UIPageViewController
(父母自己)跨度>
以上是关于iOS pageviewcontroller 禁用滑动的主要内容,如果未能解决你的问题,请参考以下文章
Pageviewcontroller 在 IOS 6 中不显示翻页动画