隐藏视图不起作用 - 迅速

问题描述 投票:1回答:2

附加了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)
}
ios swift
2个回答
8
投票

1)同步问题通常是因为您没有更新主线程上的UI。确保在主线程上进行所有UI更改。易于修复,只需使用下面的代码。

dispatch_async(dispatch_get_main_queue()) {
    loader.startAnimating()
    self.viewLoginForm.hidden = true
    self.viewDashboard.hidden = false
}

2)另一个问题可能是您隐藏和显示的子视图仍处于其他视图之下,因此您无法看到它。因此,只需将您要显示的子视图放在前面即可。

self.bringSubviewToFront(yourView)

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

© www.soinside.com 2019 - 2024. All rights reserved.