MRKViper
MRKViper 允许您根据 VIPER 系统创建一个可扩展且稳定的结构,只需使用 4 个元素 就可以实现大量的可复用内容。
Podfile。
将 'MRKViper' Pod 添加到您的pod 'MRKViper'
用法
将所有场景拆分为 4 个元素
这个 View/ViewController 元素只应包含对 View 中 UI 元素的引用,不应包含任何逻辑。
class ViewController: MRKViewControllerBase {
//All your visual components in the view
@IBOutlet weak var titleLbl: UILabel!
}
Interactor 会确保为您提供所有所需数据,如数据库、网络请求等...
class Interactor: MRKInteractorBase {
//All the functions to provide data
func getVersionNumber() -> String {
return "Hello there!"
}
}
Wireframe 将是将屏幕放置在应用程序 Flow 中的节点
class Wireframe: MRKWireframeBase {
//All the functions to provide data
func presentNextScene( _ vc:UIViewController ){
}
}
瑰宝般的 Presenter,这个家伙会收集所有前面的元素并将它们连接起来,在整个场景中提供指令。
class Presenter: MRKPresenterBase<ViewController,Interactor,Wireframe> {
override func viewDidLoad() {
super.viewDidLoad()
let data = interactor.getVersionNumber()
viewController.titleLbl.text = data
}
override func viewDidAppear() {
super.viewDidAppear()
//We pass the NavigationController as a parameter to follow the same navigation
wireframe.presentNextScene(viewController)
}
}
将它们全部融合!
最后使用MRKBuilder函数来连接所有元素,并将它们作为结果接收,使用起来非常简单:
//We pass the class of the Presenter as parameter, to combine all the elements
let elements = MRKBuilder(Presenter.self)
//Now we can access to all of its elements
let viewController = elements.viewController 👑
let interactor = elements.interactor
let wireframe = elements.wireframe
let presenter = elements.presenter 👑
// Usually you will just need to modify the presenter to customize the represented data
// Now just display the viewController with all of your configuration.
希望这个pod对您有帮助,如果您觉得它能救您的命,您可以为 redund_glf qm 表建材自救!