Я думаю, что это простая проблема, поэтому вы можете сразу перейти к вопросу.Как заставить глобальную переменную «обновлять»?
У меня есть глобальная переменная, switchStatusIndex (не относится к любому классу.):
import Foundation
//Default
var userIndex:[Int] = [0,1,2]
var userIndexForItem:[Int] = [Int]()
//Index to hold the switch status for all datatypes
var switchStatusIndex:[String] = [
NSUserDefaults.standardUserDefaults().boolForKey("switchA").description,
NSUserDefaults.standardUserDefaults().boolForKey("switchB").description,
NSUserDefaults.standardUserDefaults().boolForKey("switchC").description]
В ViewControllerOne У меня есть функция:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
setupUserIndexForItem()
}
func setupUserIndexForItem() {
userIndexForItem = [Int]() //clears userIndexForItem
for i in 0...userIndex.count-1{
if switchStatusIndex[i] == "true"{
userIndexForItem.append(userIndex[i])
}
}
}
Наконец у меня есть ViewControllerTwo с UISwitches ex
@IBOutlet var switchA: UISwitch!
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
override func layoutSubviews() {
restoreSwitchesStates()
}
@IBAction func setStateSwitchA(sender: UISwitch) {
var userdefault: NSUserDefaults = NSUserDefaults.standardUserDefaults()
if switchA.on == true {
userdefault.setBool(switchA!.on, forKey: "switchA")
}else if switchA.on == false {
userdefault.setBool(switchA!.on, forKey: "switchA")
}
userdefault.synchronize()
}
func restoreSwitchesStates() {
switchA!.on = NSUserDefaults.standardUserDefaults().boolForKey("switchA")
}
Когда я переворачиваю переключатель в .on, он обновляет NSUserdefault до «true». Однако, когда я возвращаюсь к ViewControllerOne, setupUserIndexForItem не отражает это изменение. Так как switchStatusIndex не обновляется.
Вопрос: Как заставить глобальную переменную «обновлять»?
Ваша логика и понимание глобальной переменной неверны. Google это и посмотреть, как они работают - глобальная переменная iOS –
http://stackoverflow.com/questions/3601341/iphone-global-variable –
Используйте segue из ViewControllerTwo, чтобы изменить значение переменной в ViewControllerOne. Или настройте метод делегата. – Shades