Swift3 推送视图控制器未接收数据 问题
我以前曾向其他ViewController发送过数据,但无法找出这种情况不起作用的原因。情况如下Swift3 推送视图控制器未接收数据 问题,swift3,xcode8,pushviewcontroller,Swift3,Xcode8,Pushviewcontroller,我以前曾向其他ViewController发送过数据,但无法找出这种情况不起作用的原因。情况如下 FirstViewController和SecondViewController存在于不同的故事板中 在我们以编程方式推送SecondViewController之前,我的FirstViewController将有一些数据需要发送到SecondViewController。这是通过以下方式实现的: @IBAction func someButtonPressed(_ sender: UIButton
@IBAction func someButtonPressed(_ sender: UIButton) {
let storyBoard = UIStoryboard(name: "SecondStoryBoard", bundle: nil)
if let secondViewController = storyBoard.instantiateInitialViewController() as? ResultsViewController {
secondViewController.var1 = self.var1
// Sanity check
print("set secondViewController.var1 to \(self.var1)") // Printed data as expected
self.navigationController?.pushViewController(secondViewController, animated: true)
}
}
override func viewDidLoad() {
super.viewDidLoad()
if let var1 = self.var1 {
print("SUCCESS: var1 was set!")
} else {
print("FAILURE: var1 is nil! Crash imminent") // Printed here, hence my problem
}
}
@IBAction func someButtonPressed(_ sender: UIButton) {
let storyBoard = UIStoryboard(name: "SecondStoryBoard", bundle: nil)
if let secondViewController = storyBoard.instantiateInitialViewController() as? ResultsViewController {
secondViewController.var1 = self.var1
// Sanity check
print("set secondViewController.var1 to \(self.var1)") // Printed data as expected
self.navigationController?.pushViewController(secondViewController, animated: true)
}
}
override func viewDidLoad() {
super.viewDidLoad()
if let var1 = self.var1 {
print("SUCCESS: var1 was set!")
} else {
print("FAILURE: var1 is nil! Crash imminent") // Printed here, hence my problem
}
}
解决方案 为了解决这个问题,我写了一个
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(segue.identifier == "secondViewController") {
if let secondViewController = segue.destination as? SecondViewController {
secondViewController.var1 = self.var1
}
}
}
在SecondViewController中,这样当外部视图切换到内部视图时,它将传递其数据
我也可能应该有两个视图,内部和外部,有单独的视图控制器,以避免混淆