执行 2.0.2

Perform 2.0.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2019年3月
SPM支持 SPM

Maintained by laptop, Adam Sharp, Patrick Montalto.



Perform 2.0.2

  • 作者:
  • Adam Sharp

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 文件中指定的条款重新分发。

关于

thoughtbot

Perform 由 thoughtbot, inc. 维护和资助。thoughtbot 的名称和标志是 thoughtbot, inc. 的商标。

我们热爱开源软件!查看 我们的其他项目聘用我们 来帮助您构建产品。