swift两个视图控制器之间的传值

时间:2021-01-21 20:39:38
import UIKit

class ViewController: UIViewController, myDelegate {

@IBOutlet weak var principalLabel: UILabel!

@IBAction func mainButton(sender: UIButton) {

//we got it the final instance in storyboard
let secondController: SecondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
secondController.data = "Text from superclass"
//who is it delegate
secondController.delegate = self
//we do push to navigate
self.navigationController?.pushViewController(secondController,
animated: true)
}

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func writeDateInLabel(data:NSString){
self.principalLabel.text = data as String
}

}

当点击第二个视图控制器的按钮,就通过代理回传给第一个视图控制器的lable赋值

protocol myDelegate {
func writeDateInLabel(date:NSString)
}

class SecondViewController: UIViewController {

var data: NSString = ""
var delegate: myDelegate?

@IBOutlet weak var secondLabel: UILabel!

@IBAction func secondButton(sender: AnyObject) {
self.delegate?.writeDateInLabel("I got it!")
self.navigationController?.popViewControllerAnimated(true)
}

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
secondLabel.text = data as String
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

}