所以我想通過在Swift中的分支來理解持久性。我有三個文本字段,我們將它們的名稱,日期和位置都放在一個視圖中。我創建了一個雙視圖表單,因此在我收集這些數據點(名稱,日期,位置)之後,我使用一個segue通過添加到第一個視圖的按鈕轉換到下一個視圖。通過分段的持久性
我在下一個視圖中添加了一個返回按鈕以返回到原始視圖(帶名稱,日期,位置字段)。我不明白的是這些領域的價值觀是如何持續存在的。我沒有添加任何委託或與第二個視圖控制器添加任何連接。但是,當我從第二個視圖控制器返回時,值(名稱,日期,位置)將保留在其各自的文本字段中。但是,如果我向第二個視圖控制器文本字段添加一些內容,請返回到第一個視圖控制器,然後向前移動到第二個視圖控制器,第二個視圖中的值不會持續。
class pageOne: UIViewController {
@IBOutlet weak var name: UITextField!
@IBOutlet weak var location: UITextField!
@IBOutlet weak var date: UITextField!
override func viewDidLoad() {}
@IBAction func nextScreen(sender: UIButton) {
if(eventLocation.text != nil){
self.performSegueWithIdentifier("firstSegue", sender: self)
} else {
let ac = UIAlertController(title: "Invalid Location", message:"Please enter a new location.", preferredStyle: .Alert)
ac.addAction(UIAlertAction(title: "Ok", style: .Default, handler: nil))
presentViewController(ac, animated: true, completion: nil)
}
}
}
class pageTwo: UIViewController {
@IBOutlet weak var firstValue: UITextField!
@IBOutlet weak var secondValue: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func backToStart(sender: UIButton) {
self.performSegueWithIdentifier("firstSegueReturn", sender: self)
}
}
segue是否保持視圖的先前狀態?這就是爲什麼當我通過「firstSegueReturn」返回時,我看到了我在第一個視圖中輸入的值?但是當我從第一個視圖返回到第二個視圖時,爲什麼不保存第二個視圖中的數據?
答案在您的文本中。你繼續尋找新的東西,然後回到你來自的地方。因此,向前推進是一個新的控制器,其內容由您設置爲默認內容或在您的'prepareForSegue'方法中定義。當你回去的時候,你會回到你來自哪裏的所有原始內容。所以想象一下視圖控制器被創建和堆積起來,當你向前延伸並被彈出和扔掉時向後移動。 –