Как создать глобальную переменную в Swift?
Я пытаюсь установить глобальную переменную. В моем случае просто логический флаг, который указывает, представлено ли представление в первый раз:
var initialLoadFlag: Bool = true
после представления представления я хочу установить этот флаг в false:
var initialLoadFlag: Bool = false
и затем проверьте его отныне:
if initialLoadFlag {
showWelcomeMessage()
}
Итак, я хотел бы создать initialLoadFlag
как глобальная переменная. Где и как? Я пробовал:
- на
viewDidLoad
область моего зрения контроллер - на
application()
метод в моем AppDelegate.swift file - на
AppDelegate
класс
не повезло. Я получаю Use of unresolved identifier 'initialLoadFlag'
сообщение об ошибке
(примечание: Я понимаю, что в этом вопросе я предаю свое невежество в том, как обрабатывается сфера в Swift. Пожалуйста, прости меня... У меня крайний срок, и я все еще новичок в языке.)
Спасибо за вашу помощь.
2 ответов
вы можете сохранить флаг в главном контроллере и установить его в true при выполнении перехода к контроллеру сведений. Е. Г.
class MasterViewController: UIViewController {
var firstTimePresenting = true
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
if firstTimePresenting {
println("First time!")
firstTimePresenting = false
}
}
}
}
вы можете определить структуру со статическим файлом:
struct MyViewState {
static var initialLoadFlag = false
}
использование:
// Set
MyViewState.initialLoadFlag = true
// Get
let state = MyViewState.initialLoadFlag
println("My view state:\(state)")
Примечания:
Такие хаки, как singletons и global vars, обычно необходимы в случае плохого дизайна. Возможно, вы можете сохранить свое состояние в NSUserDefaults
? Или сохраните его в каком-либо объекте сеанса, который можно ввести в любой ViewController, который должен знать о контексте.