InstantiateStandard 4.0.0

InstantiateStandard 4.0.0

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最后发布2019年6月
SPM支持 SPM

tarunon 维护。



  • tarunon

Instantiate

Build Status Carthage compatible

类型安全且可构造注入的 InterfaceBuilder 协议。

摘要

Storyboard 和 Nib 不是类型安全的,如果您使用 UIStoryboardUINib,您的代码可能会变得混乱。Instantiate 使用类型安全的协议来处理 Storyboard 和 Nib,让我们通过类型安全的协议来改进我们的代码!

现状

let storyboard = UIStoryboard(name: "ViewController", bundle: Bundle.main)
let vc = storyboard.instantiateInitialViewController() as! ViewController
vc.inject([1, 2, 3])

目标

import Instantiate
import InstantiateStandard
extension ViewController: StoryboardInstantiatable {}
let vc = ViewController(with: [1, 2, 3])

协议

StoryboardInstantiatable

支持使用Storyboard来使用viewController。在viewController类中实现StoryboardInstantiatable,然后你可以使用ViewController(with: Dependency)。

NibInstantiatable

支持使用Nib来使用view。在view类中实现NibInstantiatable,然后你可以使用View(with: Dependency)。

NibInstantiatableWrapper

支持在使用NibInstantiatable的其他InterfaceBuilder中。NibInstantiatableWrapper支持解决方案。创建一个新的UIView子类,实现NibInstantiatableWrapper,在init(coder:)和prepareForInterfaceBuilder中调用loadView。请参阅http://stackoverflow.com/questions/27807951/how-to-embed-a-custom-view-xib-in-a-storyboard-scene

Reusable

支持UITableViewCell / UICollectionViewCell的可重用功能。实现Reusable后,你可以使用Cell.dequeue(from: Parent, for: IndexPath, with: Dependency)来脱队cell。

InstantiateStandard

StoryboardTypeNibType需要static var storyboardstatic var nib。你需要自己写下这些值,很麻烦...许多开发者定义StoryboardName与ClassName相同,如果你也是,可以使用InstantiateStandard。这个库添加了默认实现StoryboardTypeNibTypeReusable

安装

Carthage

github "tarunon/Instantiate"

Pods

pod 'Instantiate'

要求

平台 版本
iOS 9.0+
macOS 10.11+
tvOS 9.0+
Swift 4.0+

Swift3.x专用

版本2支持swift3。