MVP (Model View Presenter)
import UIKit
struct Person { // Model
let firstName : String
let lastName : String
}
protocol GreetingView : class {
func setGreeting( greeting: String )
}
protocol GreetingViewPresenter {
init ( view: GreetingView , person: Person )
func showGreeting( )
}
class GreetingPresenter : GreetingViewPresenter {
unowned let view : GreetingView
let person : Person
required init ( view: GreetingView , person: Person ) {
self . view = view
self . person = person
}
func showGreeting( ) {
let greeting = " Hello " + " " + self . person. firstName + " " + self . person. lastName
self . view. setGreeting ( greeting)
}
}
class GreetingViewController : UIViewController , GreetingView {
var presenter : GreetingViewPresenter !
let showGreetingButton = UIButton ( )
let greetingLabel = UILabel ( )
override func viewDidLoad( ) {
super. viewDidLoad ( )
self . showGreetingButton. addTarget ( self , action: " didTapButton: " , forControlEvents: . TouchUpInside)
}
func didTapButton( button: UIButton ) {
self . presenter. showGreeting ( )
}
func setGreeting( greeting: String ) {
self . greetingLabel. text = greeting
}
// layout code goes here
}
// Assembling of MVP
let model = Person ( firstName: " David " , lastName: " Blaine " )
let view = GreetingViewController ( )
let presenter = GreetingPresenter ( view: view, person: model)
view. presenter = presenter