Swift UIPageViewController在添加为子视图时无法识别滑动

Swift UIPageViewController在添加为子视图时无法识别滑动,swift,uipageviewcontroller,Swift,Uipageviewcontroller,更重要的是,委托或数据源方法都没有被调用 setupPageView是从拥有PageViewController嵌入的视图的viewController的viewDidLoad调用的 这里有我忽略的东西吗 func setupPageView() { pageView = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: [.interPageSpacin

更重要的是,委托或数据源方法都没有被调用


setupPageView是从拥有PageViewController嵌入的视图的viewController的viewDidLoad调用的

这里有我忽略的东西吗

func setupPageView() {
    pageView = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: [.interPageSpacing : 9])
    pageView.dataSource = self
    pageView.delegate = self
    pageView.setViewControllers([graphViews[0]], direction: .forward, animated: true, completion: nil)

    self.addChild(pageView)
    let bounds = pageViewContainer.bounds
    pageView.view.frame = bounds
    pageViewContainer.addSubview(pageView.view)
    pageView.didMove(toParent: self)
}
使用以下代码手动更改页面效果良好:

@IBAction func segmentedControlChanged(_ sender: UISegmentedControl) {
    var direction: UIPageViewController.NavigationDirection = .forward
    let newIndex = sender.selectedSegmentIndex
    if newIndex == index {
        return
    }
    if newIndex < index {
        direction = .reverse
    }
    index = newIndex
    pageView.setViewControllers([graphViews[index]], direction: direction, animated: true, completion: nil)
}
}

扩展图形页面视图:UIPageViewControllerDataSource{

func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
    //
    if index == 0 { //@ begining of stack
        return nil
    } else {
        return graphViews[index - 1]
    }
}

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
    //
    if index == graphViews.count { //@ end of stack
        return nil
    } else {
        return graphViews[index + 1]
    }
}

您可以尝试通过以下行允许交互

pageView.isUserInteractionEnabled = true

当一个视图被封装在其他视图中,但需要捕获触摸时,这会有所帮助。您应该在<代码>和<代码>viewControllerAfter<之前和之后更改
viewControllerAfter中的索引,以反映当前索引。因此,当您滚动分别获取下一个/上一个索引时,请查看此

您的数据源和代理在哪里它是否嵌入到splitViewController中?在这种情况下,请添加:
splitViewController.PresentSwithSirth=false
。请确保在设置委托之前添加此项。可能……但数据源代码未执行,委托代码也未执行。这不是我的第一个页面。您可以检查演示吗?它与作为子级alsopageView.vi添加的功能相同ew.isUserInteractionEnabled=true不会导致调用数据源和代理或滑动工作我错过了您所说的未调用代理和数据源的第一行。您从何处调用setupPageView?setupPageView是从拥有该视图的viewController的ViewDiLoad调用的。pageViewContoller嵌入了欣。
pageView.isUserInteractionEnabled = true