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