【发布时间】:2019-02-21 17:34:21
【问题描述】:
在屏幕 A 中,我从用户那里收集数据,然后使用准备转场功能将其显示在屏幕 B 上。然后我注意到如果用户转到屏幕 C,然后返回屏幕 B,数据就消失了。我如何将数据保存在那里。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textInput: UITextField!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let a : BViewController = segue.destination as! BViewController
a.honey = textInput.text!
}
}
import UIKit
class BViewController: UIViewController {
@IBOutlet weak var x: UILabel!
var honey:String = "default"
override func viewDidLoad() {
super.viewDidLoad()
x.text = honey
}
}
【问题讨论】:
-
你怎么去第三个视图控制器然后回来?似乎您可能正在创建 B 的新实例。
-
@RakeshaShastri 看故事板图片。我只是控制将屏幕 B 上的按钮拖动到屏幕 C 并创建一个 segue
-
对,您正在创建B的新实例。您可以在B的viewDidLoad中设置断点并确保。 ViewDidLoad 在初始化之后只被调用一次,所以在你的情况下,它会在你按下 C 中的按钮后再次调用。尝试使用 UINavigatoinController - 也许这是你需要的
-
@RakeshaShastri 有没有办法在不使用 UINavigationController 的情况下不创建 B 的新实例
-
欢迎来到 StackOverflow。请阅读How to Ask 和minimal reproducible example,然后阅读edit 您的问题,其中显示了说明问题的minimum 代码。即删除空方法和模板 cmets。
标签: ios swift user-interface uiviewcontroller