В моем приложении есть функция, в которой я хочу напечатать что-либо в зависимости от загруженного контроллера текущего представления.Я делаю это, устанавливая глобальную переменную (Bool) и затем переключая флаги в классах контроллера представления.Из моего основного класса у меня есть что-то вроде этого:
var FirstViewControllerisVisible: Bool = false
var SecondViewControllerisVisible: Bool = false
var ThirdViewControllerisVisible: Bool = false
@objc func PlayAgainfunc(_ sender: Any) {
if counter % 15 == 0 {
if FirstViewControllerisVisible == true {
print("First View Controller is visible")
} else if SecondViewControllerisVisible == true {
print("Second View Controller is visible")
} else if ThirdViewControllerisVisible == true {
print("Third View Controller is visible")
}
}
counter += 1
}
Затем в этих классах я могу установить флаги следующим образом:
override func viewDidAppear(_ animated: Bool) {
FirstViewControllerisVisible = true
}
override func viewDidDisappear(_ animated: Bool) {
FirstViewControllerisVisible = false
}
Это прекрасно работало, когда это был исключительно Swift,но проблема с глобальными переменными в том, что они не доступны для Objective-C.Я не могу найти способ установить флаги в моих классах ObjC и затем проверить, является ли истина или ложь.Например, если бы я попытался:
- (void)viewDidAppear:(BOOL)animated; {
[(FirstViewControllerisVisible) == true];
}
- (void)viewDidDisappear:(BOOL)animated; {
[(FirstViewControllerisVisible) == false];
}
, я получил бы ошибку «использование необъявленного идентификатора», потому что мои глобальные переменные, объявленные в Swift, были только Swift.