Swift 代理傳值

需求:上個頁面的值,會傳到當前頁面。

  1. 傳值頁面:
class NextViewController: UIViewController {
    weak var delegate: NextVCDelegate?
    
    @IBOutlet weak var textField: UITextField!
    
    override func viewWillDisappear(_ animated: Bool) {
        textField.resignFirstResponder()
        if delegate != nil {
            delegate?.nextVCTextFieldValue(value: textField.text)
        }
    }
    override func viewDidLoad() {
        super.viewDidLoad()
            
      }
    
    deinit {
        print("銷燬啦")
    }
}
//
//聲明協議
@objc protocol NextVCDelegate {
    //協議方法
    func nextVCTextFieldValue(value: String?)
}
  1. 接受頁面
//
//  ViewController.swift
//  YDemoDelegate
//
//  Created by bruce yao on 2019/7/17.
//  Copyright © 2019 bruce yao. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    // MARK: - Navigation
    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier != nil && (segue.identifier?.elementsEqual("NextVC"))! {
            let nextVC = segue.destination as! NextViewController
            nextVC.delegate = self
        }
    }
}
extension ViewController: NextVCDelegate {
    func nextVCTextFieldValue(value: String?) {
        print(value)
    }
}
  1. 代碼demo鏈接:https://gitee.com/bruceYao1123/swiftDelegate.git
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章