【发布时间】:2020-08-15 03:54:04
【问题描述】:
我有下一个情况:当应用特殊条件时(静态成员更改为 True,另一个类访问此静态属性并发送),我必须从 viewDidAppear 调用特定函数(将视图控制器更改为另一个)满足特定条件时为真)
如果我对属性观察者这样做:
//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)
}
它会抛出一个错误试图呈现视图不在窗口层次结构中的视图控制器
而且,它是在 LoadViewController 类中执行的
据我了解,避免此错误的唯一方法是从 viewDidApper 调用该函数,在这种情况下无法使用该函数,因为我必须仅在应用条件时调用它. 是否有任何替代方法可以在不使用属性观察器的情况下执行该操作?
我确信有多种方法可以执行此操作,而且我这边可能存在误解。我是一个非常新的开发人员,对 Swift 完全陌生。非常感谢所有建议。
【问题讨论】:
-
loadVC永远不会被展示 -
@nighttalker 嘿,感谢您的快速回复。我将在问题中添加更多细节以使其更清楚。
标签: ios swift observer-pattern observers