附上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)
}
答案 0 :(得分:8)
1)同步问题通常是因为您没有在主线程上更新UI。确保在主线程上进行所有UI更改。易于修复,只需使用下面的代码。
dispatch_async(dispatch_get_main_queue()) {
loader.startAnimating()
self.viewLoginForm.hidden = true
self.viewDashboard.hidden = false
}
2)另一个问题可能是您隐藏和显示的子视图仍处于其他视图之下,因此您无法看到它。因此,只需将您要显示的子视图放在前面。
self.bringSubviewToFront(yourView)
答案 1 :(得分:0)
对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