UINavigationController在UIPageViewController问题中

时间:2016-10-30 19:30:58

标签: ios uinavigationcontroller uipageviewcontroller

我搜索和搜索仍然无法弄清楚如何解决我的问题。我有一个UIPageviewController作为初始视图控制器(如Tinder样式)。我希望每个viewController子(页面)都嵌入在它们自己的UINavigationController中,所以基本上页面视图控制器将添加UINavigationController作为它的子视图控制器。当用户点击其子视图控制器的导航控制器中的按钮以通过获取对父pageviewcontroller的引用移动到下一个视图控制器时,我使用setViewController方法,而不是使用pageviewcontroller数据源。我不想使用pageviewcontroller的数据源,因为我不想要滑动手势。

然而,当用户点击子导航控制器中的按钮以触发它的父页面视图控制器来设置下一个控制器(也是UINavigationController)时,执行此操作的动画会使整个屏幕跳起然后向下。如果我删除导航控制器,只是发送视图控制器子代,那么它工作正常。有谁知道为什么在pageviewcontroller中嵌入导航控制器会导致这个问题?

以下是用户点击导航控制器导航栏中的栏按钮项时使用的代码:

func pageViewControllerSetNewControllerFoward(){         print(“页面视图控制器设置匹配”)

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let matchesController = storyboard.instantiateViewController(withIdentifier: "matchesNav") as! UINavigationController

    parentPageViewControllerReference.setViewControllers([matchesController], direction: .forward, animated: true, completion: nil)

}

2 个答案:

答案 0 :(得分:0)

这种行为的罪魁祸首是UINavigationController试图设置它自己的UINavigationBar。尝试设置

self.navigationController?.setNavigationBarHidden(true, animated: false)

viewDidLoad()

UINavigationController

答案 1 :(得分:0)

这可以通过为Automatically Adjust Scroll Viewsfalse设置 PageViewController NavigationViewControllers来解决。

通过self.pageViewController.automaticallyAdjustsScrollViewInsets = false或更简单地在属性> layout> Adjust Scroll View Insets setfalse下的Interface Builder中执行此操作。