簡體   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