Swift Delegate 协议的使用
协议规定了用来实现某一特定功能所必需的方法和属性。
任意能够满足协议要求的类型被称为遵循(conform)这个协议。
类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议定义的方法和功能
第一个界面的代码
import UIKit
//遵循代理
class ViewController: UIViewController, classb{
//实现代理属性 和方法---------------
var present = false
var subject = "Swift 协议 subject"
var stname = "Protocol"
var marks = 99
var result = true
func attendance() -> String {
return subject + stname
}
func markssecured() {
print("\(stname) 成绩 \(marks)")
}
//实现代理属性 和方法---------------
override func viewDidLoad() {
super.viewDidLoad()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let next = NextViewController()
next.delegate = self//遵循代理
self.show(next, sender: self)
}
}
第二个界面的代码
import UIKit
//声明协议
protocol classa {
var marks: Int {get set}
var result: Bool {get}
func attendance() -> String
func markssecured()
}
//协议继承
protocol classb: classa {
var present: Bool {get set}
var subject: String {get set}
var stname: String {get set}
}
class NextViewController: UIViewController{
var delegate : classb?
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.red
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.delegate?.marks = 199 //协议属性设置
self.delegate?.markssecured()//协议方法调用
}
}