繁体   English   中英

2个视图之间的Swift和Page视图控制器

[英]Swift and Page view controller between 2 views

在我快速的iOS应用程序中,我将创建一个具有两个视图的情节提要。 我想使用页面视图控制器元素,因此,通过向左/向右滑动,用户可以更改实际视图。 我怎样才能做到这一点?

重要! 我已经搜索了几次网络上的教程。 我只找到允许在同一图像视图中更改图像的架构。 我不想在同一视图中更改同一图像中的图像; 我想改变整个看法。 我附上图片,以更好地说明。

预先感谢 ![模式 ] 1

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

  1. 将UIPageViewController拖到情节提要中,并将其标记为初始视图控制器。
  2. 然后创建一个新的UIPageViewController子类-称其为TutorialPageViewController并将其分配给刚拖到情节UIPageViewController中的对象。
  3. 现在,像往常一样将两个新的UIViewController拖入情节提要中,并为每个创建/分配一个子类。
  4. 给这两个视图控制器分别提供一个Storyboard ID例如RedViewControllerGreenViewController
  5. 现在,将此代码添加到您的TutorialPageViewController ,该代码可在您滑动时创建并显示正确的视图控制器:

TutorialPageViewController:

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]
}
}

有关更多详细信息,请参见本文,并提供有关此主题的教程。

https://spin.atomicobject.com/2015/12/23/swift-uipageviewcontroller-tutorial/

更新:页面点

从第2部分文章的第7点开始阅读,该文章显示了如何添加UIPageControl并更改滑动上的点:

https://spin.atomicobject.com/2016/02/11/move-uipageviewcontroller-dots/

@IBOutlet weak var pageControl: UIPageControl!

func tutorialPageViewController(tutorialPageViewController: TutorialPageViewController,
    didUpdatePageCount count: Int) {
    pageControl.numberOfPages = count
}

func tutorialPageViewController(tutorialPageViewController: TutorialPageViewController,
    didUpdatePageIndex index: Int) {
    pageControl.currentPage = index
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM