Ios 两个视图之间的Swift和页面视图控制器

Ios 两个视图之间的Swift和页面视图控制器,ios,swift,view,swipe,Ios,Swift,View,Swipe,在我的swift iOS应用程序中,我会创建一个带有两个视图的故事板。我想使用页面视图控制器元素,这样,通过左/右滑动,用户可以更改实际视图。我该怎么做 重要!我在网上搜索了好几次教程。我只找到了允许在同一图像视图中更改图像的模式。我不想在同一视图中更改同一图像中的图像;我想改变整个视图。我附上一张图片,以便更好地解释 提前感谢]这说明了如何使用故事板创建分页视图控制器: 将UIPageViewController拖动到情节提要中,并将其标记为初始视图控制器 然后创建一个新的UIPageView

在我的swift iOS应用程序中,我会创建一个带有两个视图的故事板。我想使用页面视图控制器元素,这样,通过左/右滑动,用户可以更改实际视图。我该怎么做

重要!我在网上搜索了好几次教程。我只找到了允许在同一图像视图中更改图像的模式。我不想在同一视图中更改同一图像中的图像;我想改变整个视图。我附上一张图片,以便更好地解释


提前感谢]

这说明了如何使用故事板创建分页视图控制器:

  • 将UIPageViewController拖动到情节提要中,并将其标记为初始视图控制器
  • 然后创建一个新的
    UIPageViewController
    子类-比如调用它
    TutorialPageViewController
    ,并将其分配给刚才拖到情节提要中的对象
  • 现在将两个新的UIViewController拖动到情节提要中,并为每个UIViewController创建/分配一个子类,就像您通常所做的那样
  • 为这两个视图控制器中的每一个提供
    情节提要ID
    ,例如
    RedViewController
    &
    GreenViewController
  • 现在将此代码添加到创建 并在您滑动时显示正确的视图控制器:
  • 教程页面视图控制器:

    class TutorialPageViewController: UIPageViewController, UIPageViewControllerDataSource {
    private(set) lazy var orderedViewControllers: [UIViewController] = {
        return [self.newColoredViewController("RedViewController"),
        self.newColoredViewController("GreenViewController")]
    }()
    
    private func newColoredViewController(color: String) -> UIViewController {
    
    return UIStoryboard(name: "Main", bundle: nil) .
        instantiateViewControllerWithIdentifier("\(color)ViewController")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        dataSource = self
    
        if let firstViewController = orderedViewControllers.first {
            setViewControllers([firstViewController],
            direction: .Forward,
            animated: true,
            completion: nil)
        }
    }
    
    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 nil
        }
    
        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 nil
        }
    
        guard orderedViewControllersCount > nextIndex else {
            return nil
        }
    
        return orderedViewControllers[nextIndex]
    }
    }
    
    请参阅本文以了解更多详细信息和有关此的教程

    更新:页面点

    阅读第2部分文章第7点,该部分介绍如何添加UIPageControl并更改滑动上的点:


    这说明了如何使用情节提要创建分页视图控制器:

  • 将UIPageViewController拖动到情节提要中,并将其标记为初始视图控制器
  • 然后创建一个新的
    UIPageViewController
    子类-比如调用它
    TutorialPageViewController
    ,并将其分配给刚才拖到情节提要中的对象
  • 现在将两个新的UIViewController拖动到情节提要中,并为每个UIViewController创建/分配一个子类,就像您通常所做的那样
  • 为这两个视图控制器中的每一个提供
    情节提要ID
    ,例如
    RedViewController
    &
    GreenViewController
  • 现在将此代码添加到创建 并在您滑动时显示正确的视图控制器:
  • 教程页面视图控制器:

    class TutorialPageViewController: UIPageViewController, UIPageViewControllerDataSource {
    private(set) lazy var orderedViewControllers: [UIViewController] = {
        return [self.newColoredViewController("RedViewController"),
        self.newColoredViewController("GreenViewController")]
    }()
    
    private func newColoredViewController(color: String) -> UIViewController {
    
    return UIStoryboard(name: "Main", bundle: nil) .
        instantiateViewControllerWithIdentifier("\(color)ViewController")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        dataSource = self
    
        if let firstViewController = orderedViewControllers.first {
            setViewControllers([firstViewController],
            direction: .Forward,
            animated: true,
            completion: nil)
        }
    }
    
    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 nil
        }
    
        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 nil
        }
    
        guard orderedViewControllersCount > nextIndex else {
            return nil
        }
    
        return orderedViewControllers[nextIndex]
    }
    }
    
    请参阅本文以了解更多详细信息和有关此的教程

    更新:页面点

    阅读第2部分文章第7点,该部分介绍如何添加UIPageControl并更改滑动上的点:


    你看过我的答案了吗?运气好吗?谢谢!我已经测试过了,但我看不到底部有代表页面的点。如何显示点栏?全部解决!感谢你看过我的答案了吗?运气好吗?谢谢!我已经测试过了,但我看不到底部有代表页面的点。如何显示点栏?全部解决!感谢