swift - 快速 4 UIPageViewControler
问题描述
我有三个 ViewController a, b , c 我想将第一个 viewController 初始化为 (b) 然后向左滑动到 viewController(a) 并向右滑动到 viewController(c)
如何通过 UIPageViewController 制作
解决方案
您将需要Page1,Page2 & Page3
在 Main.storyboard 中有 3 个带有标识符的 ViewController。
import UIKit
class PageViewController: UIPageViewController
{
fileprivate lazy var pages: [UIViewController] = {
return [
self.getViewController(withIdentifier: "Page1"),
self.getViewController(withIdentifier: "Page2"),
self.getViewController(withIdentifier: "Page3")
]
}()
fileprivate func getViewController(withIdentifier identifier: String) -> UIViewController
{
return UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: identifier)
}
override func viewDidLoad()
{
super.viewDidLoad()
self.dataSource = self
self.delegate = self
if let firstVC = pages.first
{
setViewControllers([firstVC], direction: .forward, animated: true, completion: nil)
}
}
}
extension PageViewController: UIPageViewControllerDataSource
{
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = pages.index(of: viewController) else { return nil }
let previousIndex = viewControllerIndex - 1
guard previousIndex >= 0 else { return pages.last }
guard pages.count > previousIndex else { return nil }
return pages[previousIndex]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
{
guard let viewControllerIndex = pages.index(of: viewController) else { return nil }
let nextIndex = viewControllerIndex + 1
guard nextIndex < pages.count else { return pages.first }
guard pages.count > nextIndex else { return nil }
return pages[nextIndex]
}
}
extension PageViewController: UIPageViewControllerDelegate { }
推荐阅读
- python - 高阶函数中的闭包魔法。
- python - 不支持身份验证插件“caching_sha2_password”
- ios - 在 Xcode 界面构建器中创建动态调整大小的 UILabel
- sql - SQL 循环和执行查询 - 必须声明标量变量
- javascript - 防止点击处理程序在孩子身上触发
- sql - SQL Select row, Update that row, No race conditions
- php - 试图在 php 中组合这两个 json 数组
- python - 如何对散景表中的线条进行分组?
- c++ - How to read in Hebrew letters in Visual Studios C++
- javascript - 我可以在异步函数的 try/catch 块中使用多个“等待”吗?