Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 实现UIPageViewController';s逻辑作为Swift中UIViewController的子视图_Ios_Swift_Uiviewcontroller_Uipageviewcontroller_Subview - Fatal编程技术网

Ios 实现UIPageViewController';s逻辑作为Swift中UIViewController的子视图

Ios 实现UIPageViewController';s逻辑作为Swift中UIViewController的子视图,ios,swift,uiviewcontroller,uipageviewcontroller,subview,Ios,Swift,Uiviewcontroller,Uipageviewcontroller,Subview,我必须将UIPageViewController实现为UIViewController的子视图。UIPageViewController内部有一些逻辑和其他ViewController。我的问题是如何连接下面这两段代码 这是我的主要UIViewController代码: class MyMainViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() }

我必须将UIPageViewController实现为UIViewController的子视图。UIPageViewController内部有一些逻辑和其他ViewController。我的问题是如何连接下面这两段代码

这是我的主要UIViewController代码:

class MyMainViewController: UIViewController {

    override func viewDidLoad() {
       super.viewDidLoad()
    }
    override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
    }   
}
还有我的UIPageViewController代码,它在他包含的ViewController之间实现了一个无休止的循环(我复制了整个代码,可能没有必要):


在布局
MyMainViewController
TutorialPageViewController
的情节提要中,需要将容器视图添加到
MyMainViewController
,然后使用
Embed
分段嵌入
TutorialPageViewController

当显示
MyMainViewController
时,它现在也会自动插入教程视图

class TutorialPageViewController: UIPageViewController {

    private(set) lazy var orderedViewControllers: [UIViewController] = {
        return [self.newColoredViewController("Green"),
                self.newColoredViewController("Red"),
                self.newColoredViewController("Blue")]
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        dataSource = self

        if let firstViewController = orderedViewControllers.first {
            setViewControllers([firstViewController],
                direction: .Forward,
                animated: true,
                completion: nil)
        }
    }

    private func newColoredViewController(color: String) -> UIViewController {
        return UIStoryboard(name: "Main", bundle: nil) .
        instantiateViewControllerWithIdentifier("\(color)ViewController")
    }

}

extension TutorialPageViewController: UIPageViewControllerDataSource {

    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
        guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else {
            return nil
        }

        let previousIndex = viewControllerIndex - 1
        guard previousIndex >= 0 else {
            return orderedViewControllers.last
        }
        guard orderedViewControllers.count > previousIndex else {
            return nil
        }
        return orderedViewControllers[previousIndex]
    }

    func pageViewController(pageViewController: UIPageViewController,
    viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {

        guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else {
            return nil
        }

        let nextIndex = viewControllerIndex + 1
        let orderedViewControllersCount = orderedViewControllers.count

        guard orderedViewControllersCount != nextIndex else {
            return orderedViewControllers.first
        }

        guard orderedViewControllersCount > nextIndex else {
            return nil
        }

        return orderedViewControllers[nextIndex]
    }

    func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
        return orderedViewControllers.count
    }

    func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
        guard let firstViewController = viewControllers?.first,
        firstViewControllerIndex = orderedViewControllers.indexOf(firstViewController) else {
            return 0
        }

        return firstViewControllerIndex
    }

}