Skip to content

Xcode templates to automatically generate MVP components: view controller, presenter, router and configurator.

License

Notifications You must be signed in to change notification settings

80techorg/MVP-Swift-Templates

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MVP-Swift-Templates

MVP (Model View Presenter) generator which consists of:

  • View
class LoginViewController: UIViewController {
    
    // MARK: Outlets
    
    // MARK: Injections
    var presenter: LoginPresenterInput!
    var configurator: LoginConfigurable!

    // MARK: View lifeCycle
    override func viewDidLoad() {
        super.viewDidLoad()
        
        configurator = LoginConfigurator()
        configurator.configure(viewController: self)
        presenter.viewDidLoad()
        
    }

}

// MARK: - LoginPresenterOutput
extension LoginViewController: LoginPresenterOutput {

}
  • Presenter
protocol LoginPresenterInput: BasePresenterInput {
    
    var router: LoginRoutable { get }
    
}

protocol LoginPresenterOutput: BasePresenterOutput {
    
}

class LoginPresenter {
    
    //MARK: Injections
    private weak var output: LoginPresenterOutput?
    var router: LoginRoutable
    
    //MARK: LifeCycle 
    init(output: LoginPresenterOutput,
         router: LoginRoutable) {
        
        self.output = output
        self.router = router
    }
    
}

// MARK: - LoginPresenterInput
extension LoginPresenter: LoginPresenterInput {
    
    func viewDidLoad() {
        
    }
    
}
  • Configurator
protocol LoginConfigurable {
    func configure(viewController: LoginViewController)
}

class LoginConfigurator: LoginConfigurable {

    //MARK: LoginConfigurable
    func configure(viewController: LoginViewController) {
    
        let router = LoginRouter(viewController: viewController)
        
        let presenter = LoginPresenter(
            output: viewController,
            router: router
        )
        
        viewController.presenter = presenter

    }
}
  • Router
protocol LoginRoutable: ViewRoutable {
    
}

class LoginRouter {
    
    // MARK: Injections
    weak var viewController: UIViewController?
    
    // MARK: LifeCycle
    required init(viewController: UIViewController) {
        self.viewController = viewController
    }
    
}

// MARK: - LoginRoutable
extension LoginRouter: LoginRoutable {
    
}

Installation

To install MVP Swift Xcode templates, run:

make install

To uninstall MVP Swift Xcode templates, run:

make uninstall

About

Xcode templates to automatically generate MVP components: view controller, presenter, router and configurator.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Makefile 100.0%