SegueManager 5.0.0

SegueManager 5.0.0

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布上次版本2021年3月
SPM支持SPM

Tom Lokhorst维护。



SegueManager


使用 SegueManager 可以轻松地通过编程执行轮流切换并将目的地视图控制器更新。以下示例演示如何执行轮流切换并设置视图模型

segueManager.performSegue(withIdentifier: "showDetails") { (details: DetailsViewController) in
  details.viewModel = DetailsViewModel("This is the details view model")
}

查看完整的 iOS 示例,或阅读以下使用说明。

使用 R.swift 的类型化轮流切换

SegueManager 2.0 的主要设计目标是允许使用 R.swift 来进行完全静态类型化的轮流切换。

使用 R.swift 后,上述示例变为:

self.performSegue(withIdentifier: R.segue.masterViewController.showDetails) { segue in
  segue.destination.viewModel = DetailsViewModel("This is the details view model")
}

在这里,segue 参数的类型是:TypedStoryboardSegueInfo,这意味着 destination 字段是正确的类型。

要使用 R.swift 与 SegueManager 一起使用,请在 Podfile 中包含以下子规范

pod 'SegueManager/R.swift'

安装

CocoaPods

SegueManager 适用于 iOS 和 OS X。使用 CocoaPods,您可以在 Podfile 中指定 SegueManager 来将其集成到您的 Xcode 项目中

pod 'SegueManager'

然后,运行以下命令

$ pod install

使用方法

SegueManager有三种使用方式:

  1. 继承其中一个基类型:SegueManagerViewControllerSegueManagerTableViewControllerSegueManagerCollectionViewController等。

  2. 或者,如果你不想依赖继承(通常问题多多),请创建自己的SelectiveManager。

  3. 在ViewController中创建一个SegueManager,用self实例化。

  4. 实现SeguePerformer协议

  5. 重写prepare(for:)并调用SelectiveManager。

import SegueManager

class MasterViewController: UIViewController, SeguePerformer {

  lazy var segueManager: SegueManager = {
    // SegueManager based on the current view controller
    return SegueManager(viewController: self)
  }()

  override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {
    segueManager.prepare(for: segue)
  }
}

完成此设置后,只需在self上调用performSegue并传递一个处理程序即可。

仅使用SelectiveManager

使用字符串标识符调用performSegue(withIdentifier)并传递一个处理程序。请确保指定目标ViewController的类型,因为无法推断

self.performSegue(withIdentifier: "showDetails") { (details: DetailsViewController) in
  details.viewModel = DetailsViewModel("This is the details view model")
}

使用SelectiveManager + R.swift

使用来自R.segue.*的segue标识符调用performSegue(withIdentifier)并传递一个处理程序。

self.performSegue(withIdentifier: R.segue.masterViewController.showDetails) { segue in
  segue.destination.viewModel = DetailsViewModel("This is the details view model")
}

处理程序将在目标ViewController实例化后、其视图加载前或任何动画开始前被调用。

版本发布

  • 5.0.0 - 2021-03-05 - 将最低版本提升到iOS 9
  • 4.2.0 - 2019-08-28 - 支持Swift 5.1
  • 4.1.0 - 2019-06-10 - 对Carthage的支持未经验证
  • 4.0.0 - 2018-05-19 - 支持Swift 4.1
  • 3.1.0 - 2017-01-05 - 添加tvOS支持
  • 3.0.0 - 2016-09-13 - 支持Swift 3
  • 2.1.0 - 2016-03-22 - 支持Swift 2.2
  • 2.0.0 - 2016-02-10 - 改进R.swift
  • 1.3.0 - 2016-01-23 - 将SegueManagerViewController作为UIViewController的子类添加
  • 1.2.0 - 2016-01-15 - 添加R.swift支持
  • 1.1.0 - 2015-09-22 - 添加对Carthage的支持
  • 1.0.0 - 2015-09-11 - 支持Swift 2
  • 0.9.1 - 2015-08-13 - 在未调用perpareForSegue时打印警告
  • 0.9.0 - 2015-03-20 - 支持目标为嵌套UINavigationController
  • 0.5.0 - 2015-03-05 - 首次公开发布
  • 0.0.0 - 2014-10-12 - 最初私人版本,为Q42项目提供

许可证与版权

SegueManager 由 Tom LokhorstQ42 开发,并可在 MIT 许可证 下自由使用,因此您可以在商业和非商业项目中使用它。