与this问题一样,我需要将一个ViewController的值传递给另一个,第二个VC嵌入到导航控制器中。我试着回答这个问题,但在控制台上打印的值始终为零。无法弄清楚该怎么做。Swift 1.2 - prepareForSegue针对View Controller嵌入式导航控制器
在第一个VC,我有:
var dataToSend : String!
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "toSecondVCSegue" {
println("prepareForSegue occurred test value is: *\(dataToSend)*")
let destinationNavigationController = segue.destinationViewController as! UINavigationController
let targetController = destinationNavigationController.topViewController as! SecondViewController
targetController.receivedTest = dataToSend
}
}
@IBAction func toSecondVCButtonTapped(sender: UIButton) {
performSegueWithIdentifier("toSecondVCSegue", sender: nil)
dataToSend = "passed"
}
第二
我:
var receivedTest : String!
override func viewDidLoad() {
super.viewDidLoad()
println("in SecondViewController in viewDidLoad receivedTest is: *\(receivedTest)*")
}
override func viewWillAppear(animated: Bool) {
println("in SecondViewController in viewWillAppear receivedTest is: *\(receivedTest)*")
}
override func viewDidAppear(animated: Bool) {
println("in SecondViewController in viewDidAppear receivedTest is: *\(receivedTest)*")
}
发布后的问题我意识到,错误的按钮func的顺序,执行segue应该是最后一条语句:(现在它的工作原理!,也许你可以帮助我另一种方式,你认为我应该调用超级在viewWillAppear viewDidAppear? – biggreentree
是的,super必须在那里,当你需要避免在这些方法中使用super时,会出现很少的情况,它会像super.viewWillAppear(动画) – AlexZd
,但是如果我写override override func viewWillAppear(animated:Bool){ super.viewDidAppear(animated:Bool)我得到了一个错误:( – biggreentree