【发布时间】:2017-03-05 15:01:51
【问题描述】:
我有三个视图,每个视图都有自己的视图控制器:VC1、VC2、VC3。 用户将频繁地在三个视图中的每一个之间来回切换,包括向前和向后。 每个视图都包含数据:既有从前一个视图共享的数据,也有该视图独有的数据。 当用户回到他已经访问过的视图时,该视图上显示的数据需要保留(与他上次访问该视图时看到的数据相同),而不是第一次设置为默认值他参观了风景。
在第一个视图控制器 VC1 中,我使用 prepare for segue 将数据从 VC1 推送到 VC2 或 VC3:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segueToVC2” {
let destinationViewController: VC2 = segue.destination as! VC2;
destinationViewController.passedData1 = firstAmount
destinationViewController.passedData2 = secondAmount
destinationViewController.passedData3 = thirdAmount
} else {
let destinationViewController: VC3 = segue.destination as! VC3;
destinationViewController.passedData1 = firstAmount
destinationViewController.passedData2 = secondAmount
destinationViewController.passedData3 = thirdAmount
destinationViewController.passedData4 = fourthAmount
}
通过点击每个视图上的返回按钮,我返回到上一个视图:
@IBAction func goBackButtonPressed(_ sender: Any) {
print("Back Button Pressed!")
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
我无法向后传递数据。当我从 VC1 返回 VC2 时,数据已重置为 0。我没有从 VC2 回到 VC1 或从 VC3 到 VC2 的转折。这会是最干净的数据传回方式吗:在 Main.storyboard 中创建另一个从 VC2 到 VC1 的 segue,然后在我准备检查 VC1 的 segue 中添加另一个“if”?
我在视图控制器之间来回传递所有这些变量,但只在每个视图控制器中使用其中的一些。这似乎是一种浪费,我认为我在这里没有走在正确的轨道上。
有什么帮助或建议吗?
【问题讨论】:
-
看看代表!
标签: ios swift uiviewcontroller segue