繁体   English   中英

从其他方法中删除子视图

[英]Remove subview from other method

我从一种方法初始化UIVisualEffectView,并需要用其他方法将其删除。

func showBlur() {
    let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
    let blurView = UIVisualEffectView(effect: blurEffect)
    // ...
}
func destroyBlur {
    // i can’t destroy via remove from superview it here, blurView was initialized in showBlur()
}

我试过不在方法中而是在类中启动blurView…UIViewController中的init()有问题。

我试图在view.subViews中找到该视图,但是我没有运气。

我尝试将标签设置为UIView,但最近在subView列表中找不到该标签。

您可以创建属性以在类的开头存储UIVisualEffectView:

var blurView: UIVisualEffectView!

showBlur()函数中,该变量的效果如下:

let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
blurView = UIVisualEffectView(effect: blurEffect)

并在destroyBlur()中调用:

blurView.removeFromSuperview()

如果我正确理解了这个问题,那么问题是您在showBlur()之外没有对blurView的引用。

如果这是问题所在,则需要为blurView创建一个类成员(类属性)。

您可能希望将此属性设为可选属性,因为以后似乎可能会或可能不会设置它。

这样的事情可能会起作用

var blurView:UIVisualEffectView?

稍后在您的代码中:

func showBlur() {
    let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light)
    blurView = UIVisualEffectView(effect: blurEffect)
    // ...
}
func destroyBlur {
    blurView!.removeFromSuperview();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM