Я искал часы здесь и в Google, но так и не нашел ответа. Все указывает на передачу переменной от VC к другому, но не на то, как поддерживать переменные в VC.
Я могу передавать переменные из виртуального контейнера в другой, используя несколько методов, таких как синглтон, но когда я перехожу из второго виртуального контейнера в основной виртуальный канал, я все еще сталкиваюсь с той же проблемой.
Например, у вас есть основной VC, который имеет метку и 2 кнопки. Когда вы нажимаете одну из кнопок, текст метки меняется, а затем вы нажимаете вторую кнопку, чтобы перейти ко второму ВК. Затем, когда вы возвращаетесь к первому VC, возникает проблема: метка сбрасывается в исходный текст «метка». Почему?
Я пытался использовать глобальную переменную в отдельном файле swift. Я сказал себе хорошо, что значение хранится в другом файле swift, нет причины, по которой значение метки сбрасывается ... но хорошо, что оно все еще сбрасывается.
Большое спасибо.
Пример в видео: https://youtu.be/Wx5blkQqU7E
Очень простой пример:
varTest.swift
import Foundation
var myVar2: String!
Main ViewController
import UIKit
class ViewController: UIViewController {
@IBOutlet var mylabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func dsfg(_ sender: UIButton) {
performSegue(withIdentifier: "switchForm", sender: self)
}
@IBAction func changeLabeltext(_ sender: UIButton) {
myVar2 = "Good."
mylabel.text = myVar2
}
}
Второй ViewController
import UIKit
class ViewController2: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnPrint(_ sender: UIButton) {
performSegue(withIdentifier: "returnForm", sender: self)
}
}