У меня следующая ситуация: из viewDidAppear мне нужно вызывать указанную функцию c (для изменения контроллера представления на другую), когда применяется специальное условие (член stati c меняется на True, другой класс получить доступ к этому свойству stati c и отправить True, как только будут выполнены определенные условия)
Если я сделаю это так с наблюдателем свойства:
//this is property of load view controller
static var isFilled: Bool = false {
didSet{
if isFilled == true {
print("data is Filled")
//load view controller - my present VC, which I want to switch
var loadVC = LoadViewController()
loadVC.changeViewController(vc: loadVC )
Это функция changeViewController:
func changeViewController(vc: UIViewController) {
let sb = UIStoryboard(name: "Main", bundle: nil )
//main view controller - controller, which i want to Go to
var mainViewController = sb.instantiateViewController(withIdentifier: "ViewController") as! ViewController
vc.present(mainViewController, animated: true, completion: nil)
}
Будет выдана ошибка Попытка представить viewcontroller, вид которого не находится в иерархии окон
И он выполняется внутри класса LoadViewController
Как я Понимаете, единственный способ избежать этой ошибки - вызвать функцию из viewDidApper , которая не может быть использована в этом сценарии, потому что я должен вызывать ее только при применении условия. Есть ли какие-либо альтернативы для выполнения этого без использования свойства обозревателя?
Я уверен, что есть несколько способов сделать это, и могут быть неправильные представления с моей стороны. Я довольно свободный sh разработчик и совершенно новичок в Swift. Все предложения будут высоко оценены.