代理 –> 逆向传值
SecondViewController代码快
import UIKit
protocol SecondViewControllerDelegate {
func showInfo(_ str : String) -> Void
}
// 类名后不能写SecondViewControllerDelegate
class SecondViewController: UIViewController {
var delegateSecond: SecondViewControllerDelegate!
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.white
let btn = UIButton()
btn.setTitle("返回", for: .normal)
btn.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
btn.backgroundColor = UIColor.purple
btn.addTarget(self, action: #selector(backBtnClick), for: .touchUpInside)
self.view.addSubview(btn)
}
func backBtnClick() {
delegateSecond?.showInfo("second controller delegete")
self.navigationController?.popViewController(animated: true)
}
}
FirstViewController代码块
import UIKit
class FirstViewController: UIViewController, SecondViewControllerDelegate {// 遵循SecondViewControllerDelegate
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.white
let btn = UIButton()
btn.setTitle("跳转", for: .normal)
btn.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
btn.backgroundColor = UIColor.purple
btn.addTarget(self, action: #selector(pushBtnClick), for: .touchUpInside)
self.view.addSubview(btn)
}
func pushBtnClick() {
let secondVC = SecondViewController()
secondVC.delegateSecond = self // 指定代理
self.navigationController?.pushViewController(secondVC, animated: true)
}
func showInfo(_ str: String) { // 实现代理方法
print(str,".....")
}
}