隐藏视图不起作用 - 迅速

时间:2016-01-03 04:05:08

标签: ios swift

附上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)
}

2 个答案:

答案 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