附加了Subviews层次结构,我只想隐藏一个并在登录后显示其他内容。我无法使用导航控制器,因为我需要滑动才能在webview中工作。
所以我尝试简单地切换视图,但它不一致。
任何帮助表示赞赏。
这是我正在尝试的。
func openBrowserView() {
loader.startAnimating()
self.viewLoginForm.hidden = true
self.viewDashboard.hidden = false
print (" views hid")
let requestURL = NSURL(string:browserURL)
let request = NSMutableURLRequest(URL: requestURL!)
request.HTTPMethod = httpMethod
webView.delegate = self;
webView.loadRequest(request)
}
1)同步问题通常是因为您没有更新主线程上的UI。确保在主线程上进行所有UI更改。易于修复,只需使用下面的代码。
dispatch_async(dispatch_get_main_queue()) {
loader.startAnimating()
self.viewLoginForm.hidden = true
self.viewDashboard.hidden = false
}
2)另一个问题可能是您隐藏和显示的子视图仍处于其他视图之下,因此您无法看到它。因此,只需将您要显示的子视图放在前面即可。
self.bringSubviewToFront(yourView)
Ankit Goel答案的微小改进。
dispatch_async(dispatch_get_main_queue()) {
}
向我展示了这个错误:“在试图使用主线程时模糊地使用DispatchQueue”
所以我反而使用了
DispatchQueue.main.async(execute: { () -> Void in
})
参考:Ambiguous use of DispatchQueue on trying to use main thread