使用 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有三种使用方式:
-
继承其中一个基类型:
SegueManagerViewController
、SegueManagerTableViewController
、SegueManagerCollectionViewController
等。 -
或者,如果你不想依赖继承(通常问题多多),请创建自己的SelectiveManager。
-
在ViewController中创建一个
SegueManager
,用self
实例化。 -
实现
SeguePerformer
协议 -
重写
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 Lokhorst 在 Q42 开发,并可在 MIT 许可证 下自由使用,因此您可以在商业和非商业项目中使用它。