MRKViper 1.0.1

MRKViper 1.0.1

MRK Trace 维护。



MRKViper 1.0.1

MRKTrace Logo

MRKViper

MRKViper 允许您根据 VIPER 系统创建一个可扩展且稳定的结构,只需使用 4 个元素 就可以实现大量的可复用内容。

将 'MRKViper' Pod 添加到您的 Podfile

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 表建材自救!🍺