ios - removeFromSuperview() 并不总是有效

标签 ios swift uiview

我声明了一个名为 var progressBar 的 UIView 变量:UIView?

我用这个函数显示或隐藏 View

func showProgressBar(showBar: Bool){
if showBar{
            let viewHeight = view.frame.size.height
            progressBar = Bundle.main.loadNibNamed("progressBar", owner: nil, options: nil)?.first as? UIView
            progressBar?.frame = CGRect(x: 0, y: viewHeight - 80 , width: self.view.frame.width, height: 80)
            if let bar = progressBar{
                self.view.addSubview(bar)
            }
        }else{
            DispatchQueue.main.async() {
                self.progressBar?.removeFromSuperview()
            }
        }

有时,当我在 View 之间稍微导航时,我无法隐藏进度条,即使在执行 self.progressBar?.removeFromSuperview() 时也是如此。在我看来,如果 View 丢失了对旧进度条的引用...您是否知道这个问题以及我该如何解决它?

最佳答案

如果您调用 showProgressBar 两次,则不会验证是否已经没有栏,因此您可能会添加第二个栏并丢失对第一个栏的引用。因此,当您删除它时,它只会删除第二个并且不起作用。

关于ios - removeFromSuperview() 并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44702264/

相关文章:

ios - 如果我们点击背景中的任何地方,除了快速点击 popView 之外,如何删除 popView

swift - Swift4:使用userDefaults保存UIImages

ios - 在带有 subview 的 UIButton 上显示突出显示

ios - 在类中定义的闭包中到达 "self"

ios - UIActionSheet 在 iOS8 上已弃用

swift - 当我们在 swift 中调用 setvalueForKey 时会发生什么

swift - 如何通过 #selector 操作中的 UIButton 创建函数?

ios - Swift - 奇怪的编码兼容错误

ios - 相机消失后如何恢复播放音频?

ios - iOS 9+ 问题的 Branch.io 链接