页面1 跳转到页面2。如果想从页面1得到页面2的值的话,其实可以在页面2中调用:
( self.presentedViewController as! ViewController).label.text = self.textField.text
还可以用其他方式:block,KVO,通知中心,delegate传值等。
block方式:
第二个页面:
class VC2: UIViewController,UITextFieldDelegate {
var block:((String)->())?//定义一个闭包
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
//点击键盘的return 的时候将block的值传回。
if block != nil{
//此处的block 其实已经是 第一个页面getValueFromNextPage 的引用了
block!(textField.text!)
}
self.dismissViewControllerAnimated(true, completion: nil)
return true
}
}
第一个页面:
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
//定义一个函数,其实也可以定义一个block: var block:(String)->Void = {self.label.text = $0}
func getValueFromNextPage(string:String){
self.label.text = string
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let vc2 = segue.destinationViewController as! VC2
//第二个页面的block并没有初始化,因为第二个页面的block是第一个页面getValueFromNextPage的引用。
vc2.block = getValueFromNextPage
}
}