1. If the view controller containing the textfield can call (with a segue) the view controller containing the label...
Add a new Cocoa Touch class file in your project, name it FirstViewController
and set the following code in it:
import UIKit
class FirstViewController: UIViewController {
@IBOutlet weak var textField: UITextField! // FIXME: link this to the UITextField in the Storyboard!!!
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let controller = segue.destinationViewController as! SecondViewController
controller.text = textField.text
}
}
Add a new Cocoa Touch class file in your project, name it SecondViewController
and set the following code in it:
import UIKit
class SecondViewController: UIViewController {
var text: String?
@IBOutlet weak var label: UILabel! // FIXME: link this to the UILabel in the Storyboard!!!
override func viewDidLoad() {
super.viewDidLoad()
label.text = text
}
}
In the Storyboard, embed the first view controller in a UINavigationController
. Link the first view controller to the second with a UIButton
or a UIBarButtonItem
. Set the name of the first view controller to FirstViewController
and the name of the second view controller to SecondViewController
. Create a UITextField
in the first view controller. Create a UILabel
in the second view controller. Link the textfield and the label to their respective declarations in FirstViewController
and SecondViewController
.
2. If the view controller containing the label can call (with a segue) the view controller containing the textfield...
Here, this is a perfect protocol/delegate case. You may find a lot of stuff on StackOverflow dealing with this. However, here is a rough example.
Add a new Cocoa Touch class file in your project, name it FirstViewController
and set the following code in it:
import UIKit
class FirstViewController: UIViewController, DetailsDelegate {
@IBOutlet weak var label: UILabel! // FIXME: link this to the UILabel in the Storyboard
func updateLabel(withString string: String?) {
label.text = string
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let controller = segue.destinationViewController as! SecondViewController
controller.delegate = self
}
}
Add a new Cocoa/Cocoa Touch class file in your project, name it SecondViewController
and set the following code in it:
import UIKit
protocol DetailsDelegate: class {
func updateLabel(withString string: String?)
}
class SecondViewController: UIViewController {
weak var delegate: DetailsDelegate?
@IBOutlet weak var textField: UITextField! // FIXME: link this to the UITextField in the Storyboard
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
delegate?.updateLabel(withString: textField.text)
}
}
In the Storyboard, embed the first view controller in a UINavigationController
. Link the first view controller to the second with a UIButton
or a UIBarButtonItem
. Set the name of the first view controller to FirstViewController
and the name of the second view controller to SecondViewController
. Create a UILabel
in the first view controller. Create a UITextField
in the second view controller. Link the textfield and the label to their respective declarations in FirstViewController
and SecondViewController
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…