Ios 隐藏视图不工作-swift

Ios 隐藏视图不工作-swift,ios,swift,Ios,Swift,附加子视图层次结构,我只想在登录后隐藏一个并显示另一个。我无法使用导航控制器,因为我需要在webview中使用滑动 所以我试着简单地切换视图,但并不一致 感谢您的帮助 这就是我正在尝试的 func openBrowserView() { loader.startAnimating() self.viewLoginForm.hidden = true self.viewDashboard.hidden = false print (" views hid")

附加子视图层次结构,我只想在登录后隐藏一个并显示另一个。我无法使用导航控制器,因为我需要在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)
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

})

参考资料:

对Ankit Goel的回答有一点改进

dispatch_async(dispatch_get_main_queue()) {
}
正在向我显示此错误:“尝试使用主线程时不明确地使用DispatchQueue”

所以我用了

DispatchQueue.main.async(execute: { () -> Void in

})

参考资料:

您需要发布比“不一致”更详细的信息,以便有人能够提供帮助。您需要发布比“不一致”更详细的信息,以便有人能够提供帮助。此问题发生在我的案例中
viewDidLoad
,我通过使用
DispatchQueue.main.async
解决了这个问题。这真的很奇怪,因为viewDidLoad本身在主线程上运行。有什么原因吗?这个问题发生在我的案例中
viewDidLoad
,我使用
DispatchQueue.main.async
解决了这个问题。这真的很奇怪,因为viewDidLoad本身在主线程上运行。有什么理由吗?