Perform
Storyboard segues 的简单依赖注入。
import Perform
// ...
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: NSIndexPath) {
let task = taskList[indexPath.row]
perform(.showTaskDetails) { taskVC in
taskVC.task = task
}
}
用法
配置您的 segues
// Sources/Extensions/Segue.swift
import Perform
extension Segue {
static var showTaskDetails: Segue<TaskDetailsViewController> {
return .init(identifier: "ShowTaskDetails")
}
}
然后使用 perform(_:prepare:)
而不是 performSegue(withIdentifier:sender:)
。就这么简单!
类型安全的 segues
Perform 会检查目标视图控制器的类型并将其转换为相应的类型,如果目标视图控制器类型不正确,则会引发错误。
如果视图控制器是容器中的嵌入式,仍然有效
你是否编写过这样的代码?
guard let nav = segue.destinationViewController as? UINavigationController,
let content = nav.rootViewController as? MyViewController
else { return }
// ... finally! 😭
Perform 会处理这个问题,它会搜索视图控制器层次结构以找到匹配类型的视图控制器!
prepareForSegue(_:sender:)
中无需 switch 语句
在 从一个视图控制器发出多个 segue?没问题,只需在每个执行 segue 的地方准备好每个目标视图控制器。不再需要大量的 switch 语句。
进一步阅读
更多示例以及对 Perform 激励和设计的讨论,请参阅 介绍性博客文章。
安装
兼容性
Swift 版本 | Perform 版本 |
---|---|
3.x | 2.x |
2.x | 1.x |
Carthage
将以下内容添加到您的 Cartfile 中
github "thoughtbot/Perform" ~> 2.0
然后运行 carthage update Perform
。
有关最新的安装说明,请遵循 Carthage 中的 README 中的说明。
CocoaPods
将以下内容添加到您的 Podfile 中
pod "Perform", "~> 2.0"
请参阅 CocoaPods 指南 获取最新的安装说明。
贡献
请参阅 CONTRIBUTING 文档。
许可协议
Perform 版权所有 (c) 2016 thoughtbot, inc. 它是自由软件,可以根据 LICENSE 文件中指定的条款重新分发。
关于
Perform 由 thoughtbot, inc. 维护和资助。thoughtbot 的名称和标志是 thoughtbot, inc. 的商标。