1.

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

view调用self.presenter,presernter调用self.view

https://blog.coding.net/blog/ios-architecture-patterns

https://segmentfault.com/a/1190000006800020

最新文章

  1. HTML5 —— 自学第一课
  2. 修改git remote url
  3. scp命令[转]
  4. HTTP负载测试——Tsung
  5. hdwiki 学习笔记 01
  6. MongoDB 备份方法
  7. python学习[二]
  8. php删除最后一个字符
  9. eclipse IDE 扩展pydev
  10. WindowsService服务程序开发
  11. [翻译] TensorFlow Programmer's Guide之Frequently Asked Questions(问得频率最多的几个问题)
  12. smb 访问时 提示权限不够
  13. itcast-spring
  14. 【Java基础】反射和注解
  15. jenkins和gitlab结合的时候出错
  16. 中国的互联网企业逐步走向“单一企业多样化,商业生态同质化”,美国的互联网企业则会走向“单一企业专业化,商业生态多样化”:3.5星|《VUCA时代,想要成功,这些原则你一定得明白》
  17. Ext3.4--TreeGridDemo
  18. 【题解】CF#229 E-Gifts
  19. 科猫网项目总结(基于SSM框架)
  20. Python实现局域网内屏幕广播的技术要点分析(转载)

热门文章

  1. 《Linux内核设计与实现》第一、二章学习笔记
  2. someday团队Postmortem(事后诸葛亮会议)
  3. YQCB冲刺第二周第六天
  4. Hadoop 4 MapReduce
  5. Github: 团队账号:https://github.com/ChenRuTing
  6. Razor - 标记简述
  7. HDU 2022 海选女主角
  8. Android应用如何跳转到应用市场详情页面
  9. Goodbye My Old Days
  10. stm32 修改工作频率