Ios 是否可以切换到UIPageViewController?

Ios 是否可以切换到UIPageViewController?,ios,swift,uipageviewcontroller,Ios,Swift,Uipageviewcontroller,我试图在用户登录后将教程部分添加到我的应用程序中。当应用程序加载时,他们将首先进入登录屏幕并输入他们的凭据。验证后,我想转到UIPageViewController,向他们展示两页关于如何使用该应用程序的说明。然而,我所有的尝试都导致了黑屏。以下是我目前的尝试: import UIKit class TutorialPageViewController: UIPageViewController { var pages: [UIViewController] = [] ov

我试图在用户登录后将教程部分添加到我的应用程序中。当应用程序加载时,他们将首先进入登录屏幕并输入他们的凭据。验证后,我想转到
UIPageViewController
,向他们展示两页关于如何使用该应用程序的说明。然而,我所有的尝试都导致了黑屏。以下是我目前的尝试:

import UIKit

class TutorialPageViewController: UIPageViewController {

    var pages: [UIViewController] = []

    override func viewDidLoad()
    {
        super.viewDidLoad()
        self.dataSource = self
        self.delegate   = self
        print("LOADING")
        let firstView = storyboard?.instantiateViewController(withIdentifier: "TutorialPage1") as! TutorialPage1ViewController
        let secondView = storyboard?.instantiateViewController(withIdentifier: "TutorialPage2") as! TutorialPage2ViewController
        pages = [firstView, secondView]
        let startingViewController = self.pages[0]
        let viewControllers: [UIViewController] = [startingViewController]
        self.setViewControllers(viewControllers, direction: UIPageViewControllerNavigationDirection.forward, animated: true, completion: {(done: Bool) in})
    }

    func viewControllerAtIndex(index:NSInteger) -> UIViewController {
        return pages[index]
    }
}

extension TutorialPageViewController: UIPageViewControllerDataSource
{
    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {

    guard let viewControllerIndex = pages.index(of: viewController) else { return nil }

        let previousIndex = viewControllerIndex - 1

        guard previousIndex >= 0          else { return pages.last }

        guard pages.count > previousIndex else { return nil        }

        return pages[previousIndex]
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
    {
        guard let viewControllerIndex = pages.index(of: viewController) else { return nil }

        let nextIndex = viewControllerIndex + 1

        guard nextIndex < pages.count else { return pages.first }

        guard pages.count > nextIndex else { return nil         }

        return pages[nextIndex]
    }
}

extension TutorialPageViewController: UIPageViewControllerDelegate { }
导入UIKit
类教程PageViewController:UIPageViewController{
变量页:[UIViewController]=[]
重写func viewDidLoad()
{
super.viewDidLoad()
self.dataSource=self
self.delegate=self
打印(“加载”)
让firstView=storyboard?.InstanceEviewController(标识符为:“TutorialPage1”)作为!TutorialPage1ViewController
让secondView=storyboard?.InstanceEviewController(标识符为:“TutorialPage2”)作为!TutorialPage2ViewController
页面=[firstView,secondView]
让startingViewController=self.pages[0]
让ViewController:[UIViewController]=[startingViewController]
self.setViewController(ViewController,方向:UIPageViewControllerNavigationDirection.forward,动画:true,完成:{(完成:Bool)in})
}
func viewControllerAtIndex(索引:NSInteger)->UIViewController{
返回页[索引]
}
}
扩展教程PageViewController:UIPageViewControllerDataSource
{
func pageViewController(uPageViewController:UIPageViewController,viewController在viewController:UIViewController之前)->UIViewController{
guard let viewControllerIndex=pages.index(of:viewController)else{return nil}
让previousIndex=viewControllerIndex-1
guard previousIndex>=0 else{return pages.last}
guard pages.count>previousIndex else{return nil}
返回页面[以前的索引]
}
func pageViewController(pageViewController:UIPageViewController,viewController后的viewController:UIViewController)->UIViewController?
{
guard let viewControllerIndex=pages.index(of:viewController)else{return nil}
设nextIndex=viewControllerIndex+1
guard nextIndexnextIndex else{return nil}
返回页面[nextIndex]
}
}
扩展教程PageViewController:UIPageViewControllerDelegate{}
我的
viewDidLoad
方法中的print语句没有被调用,因此我不明白我做错了什么。我已经从登录视图控制器创建了一个到
TutorialPageViewController
的推送序列,但从未加载任何内容


非常感谢您的帮助。

请尝试在下面的GitHub Repo中查看示例项目:

链接-

包含两种不同的访问方式

1. Making use of Container View and PageVC as SubView 

2. Using Segue

你用的是哪个赛格?显示,因为在我结束时,它工作良好在查看更多内容后,我创建了一个视图控制器,其中包含一个容器视图,然后创建了一个视图控制器(uipageviewcontroller类型),并添加了一个工作良好的嵌入式segue。我不知道你是如何让它以这种方式工作的,除非它是你的根视图控制器。我应该分享我的演示代码吗?你可以查一下那太好了请查一下