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. } }