(Swift)需要帮助在视图控制器之间滑动

(Swift)需要帮助在视图控制器之间滑动,swift,xcode,viewcontroller,uipageviewcontroller,Swift,Xcode,Viewcontroller,Uipageviewcontroller,这些是我的视图控制器: 我想这样做,这样我就可以从中间的三个开始。我找到的所有教程都要求您从头开始,但没有告诉我如何连接我的三个教程。有没有人对如何做到这一点有一个循序渐进的指导 非常感谢您的帮助您可以通过导航控制器连接视图控制器。只需选择一个视图控制器->编辑器(在mac的顶栏上)->嵌入->导航控制器 此外,如果您想刷卡,您可以使用滚动视图,并且只能在视图控制器上使用。内容大小为3个视图控制器的滚动视图可以帮助您执行相同的操作。 谢谢您可以通过导航控制器连接视图控制器。只需选择一个视图控制器

这些是我的视图控制器:

我想这样做,这样我就可以从中间的三个开始。我找到的所有教程都要求您从头开始,但没有告诉我如何连接我的三个教程。有没有人对如何做到这一点有一个循序渐进的指导


非常感谢您的帮助

您可以通过导航控制器连接视图控制器。只需选择一个视图控制器->编辑器(在mac的顶栏上)->嵌入->导航控制器

此外,如果您想刷卡,您可以使用滚动视图,并且只能在视图控制器上使用。内容大小为3个视图控制器的滚动视图可以帮助您执行相同的操作。
谢谢

您可以通过导航控制器连接视图控制器。只需选择一个视图控制器->编辑器(在mac的顶栏上)->嵌入->导航控制器

此外,如果您想刷卡,您可以使用滚动视图,并且只能在视图控制器上使用。内容大小为3个视图控制器的滚动视图可以帮助您执行相同的操作。
谢谢

首先创建一个名为PageViewController的类,在情节提要中拖动一个
UIPageViewController
。现在让我们从属性检查器中将其设置为初始视图控制器。还可以从标识检查器将PageViewController设置为类

调用您的三视图控制器,例如StepZero、StepOne、StepTwo,并在情节提要中为它们提供标识符

现在让我们深入到编码中,因此在PageViewController中,应该子类
UIPageVIewController

import UIKit

class PageViewController : UIPageViewController,UIPageViewControllerDataSource {

    var selectedIndex = 1

    override func viewDidLoad() {

        dataSource = self

        view.backgroundColor = UIColor.darkGrayColor()

        // This is the starting point.  Start with step zero.
        setViewControllers([getStepOne()], direction: .Forward, animated: false, completion: nil)
    }

    func getStepZero() -> StepZero {
        return storyboard!.instantiateViewControllerWithIdentifier("StepZero") as! StepZero
    }

    func getStepOne() -> StepOne {
        return storyboard!.instantiateViewControllerWithIdentifier("StepOne") as! StepOne
    }

    func getStepTwo() -> StepTwo {
        return storyboard!.instantiateViewControllerWithIdentifier("StepTwo") as! StepTwo
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
        if viewController.isKindOfClass(StepTwo) {
            // 2 -> 1
            return getStepOne()
        } else if viewController.isKindOfClass(StepOne) {
            // 1 -> 0
            return getStepZero()
        } else {
            // 0 -> end of the road
            return nil
        }
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
        if viewController.isKindOfClass(StepZero) {
            // 0 -> 1
            return getStepOne()
        } else if viewController.isKindOfClass(StepOne) {
            // 1 -> 2
            return getStepTwo()
        } else {
            // 2 -> end of the road
            return nil
        }
    }

    // Enables pagination dots
    func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
        return 3
    }

    // This only gets called once, when setViewControllers is called
    func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
        return selectedIndex
    }


}
假设在故事板中有三个ViewController,您应该从identity inspector中将它们的标识符设置为StepZero Step1 Step2,例如,当您实例化它们时,您应该:

func getStepZero() -> StepZero {
    return storyboard!.instantiateViewControllerWithIdentifier("StepZero") as! StepZero
}

func getStepOne() -> StepOne {
    return storyboard!.instantiateViewControllerWithIdentifier("StepOne") as! StepOne
}

func getStepTwo() -> StepTwo {
    return storyboard!.instantiateViewControllerWithIdentifier("StepTwo") as! StepTwo
}
所选索引是您希望以数字1开始的索引。在
setViewControllers
中调用第二个视图控制器
getStepOne()
。如果要从视图控制器3开始,请使用选定的索引2并调用
getstep2()
…等


下载更新的示例:

首先创建一个名为PageViewController的类,在情节提要中拖动一个
UIPageViewController
。现在让我们从属性检查器中将其设置为初始视图控制器。还可以从标识检查器将PageViewController设置为类

调用您的三视图控制器,例如StepZero、StepOne、StepTwo,并在情节提要中为它们提供标识符

现在让我们深入到编码中,因此在PageViewController中,应该子类
UIPageVIewController

import UIKit

class PageViewController : UIPageViewController,UIPageViewControllerDataSource {

    var selectedIndex = 1

    override func viewDidLoad() {

        dataSource = self

        view.backgroundColor = UIColor.darkGrayColor()

        // This is the starting point.  Start with step zero.
        setViewControllers([getStepOne()], direction: .Forward, animated: false, completion: nil)
    }

    func getStepZero() -> StepZero {
        return storyboard!.instantiateViewControllerWithIdentifier("StepZero") as! StepZero
    }

    func getStepOne() -> StepOne {
        return storyboard!.instantiateViewControllerWithIdentifier("StepOne") as! StepOne
    }

    func getStepTwo() -> StepTwo {
        return storyboard!.instantiateViewControllerWithIdentifier("StepTwo") as! StepTwo
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
        if viewController.isKindOfClass(StepTwo) {
            // 2 -> 1
            return getStepOne()
        } else if viewController.isKindOfClass(StepOne) {
            // 1 -> 0
            return getStepZero()
        } else {
            // 0 -> end of the road
            return nil
        }
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
        if viewController.isKindOfClass(StepZero) {
            // 0 -> 1
            return getStepOne()
        } else if viewController.isKindOfClass(StepOne) {
            // 1 -> 2
            return getStepTwo()
        } else {
            // 2 -> end of the road
            return nil
        }
    }

    // Enables pagination dots
    func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
        return 3
    }

    // This only gets called once, when setViewControllers is called
    func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
        return selectedIndex
    }


}
假设在故事板中有三个ViewController,您应该从identity inspector中将它们的标识符设置为StepZero Step1 Step2,例如,当您实例化它们时,您应该:

func getStepZero() -> StepZero {
    return storyboard!.instantiateViewControllerWithIdentifier("StepZero") as! StepZero
}

func getStepOne() -> StepOne {
    return storyboard!.instantiateViewControllerWithIdentifier("StepOne") as! StepOne
}

func getStepTwo() -> StepTwo {
    return storyboard!.instantiateViewControllerWithIdentifier("StepTwo") as! StepTwo
}
所选索引是您希望以数字1开始的索引。在
setViewControllers
中调用第二个视图控制器
getStepOne()
。如果要从视图控制器3开始,请使用选定的索引2并调用
getstep2()
…等


下载更新的示例:

如下图所示

如下图所示给出情节提要标识符

在按钮上单击“推送新视图控制器”

var viewControllerObj=self.storyboard!.instantiateViewControllerWithIdentifier("your storyboard identifier") 
self.navigationController!.pushViewController(viewControllerObj, animated: true)

如下图所示

如下图所示给出情节提要标识符

在按钮上单击“推送新视图控制器”

var viewControllerObj=self.storyboard!.instantiateViewControllerWithIdentifier("your storyboard identifier") 
self.navigationController!.pushViewController(viewControllerObj, animated: true)

我收到一个错误:“'Use of undeclared type ViewController'”对此有任何解决方案吗?@evanhaus ViewController是您的类的名称。在我的示例中,它被称为ViewController,也许在您的示例中,它被称为其他东西!好酷!还有一个问题,“MyViewController没有成员”pageIndex“@evanhaus您可以添加到MyViewController变量pageIndex:Int中吗?应该会使错误消失。@Aaoli我试图在有人登录后加载以下内容:
let mainStoryBoard:UIStoryboard=UIStoryboard(名称:“Main”,bundle:nil)让homeViewController:UIViewController=MainstryBoard.InstanceEviewController的标识符(“PageViewController”)为self.presentViewController(homeViewController,动画:true,完成:nil)
我收到一个错误:“'Use of undeclared type ViewController'“有什么解决方案吗?@evanhaus ViewController是您的类的名称。在我的示例中,它被称为ViewController,也许在您的示例中,它被称为其他东西!好酷!还有一个问题,“MyViewController没有成员”pageIndex“@evanhaus您可以添加到MyViewController变量pageIndex:Int中吗?应该会使错误消失。@Aaoli我试图在有人登录后加载以下内容:
let mainStoryBoard:UIStoryboard=UIStoryboard(名称:“Main”,bundle:nil)让homeViewController:UIViewController=mainStoryBoard.InstanceEviewController的标识符(“PageViewController”)自己。presentViewController(homeViewController,动画:true,完成:nil)