在我的ViewController的故事板中,我添加了一个UIView,点击按钮我将其alpha改为0.0 - > 1.0:
UIView.animateWithDuration(0.5, delay: 0.5, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.8, options: [.CurveEaseOut], animations: {
self.blurView.alpha = 1.0
}, completion: { _ in
self.blurView.addSubview(self.signUpView)
})
其中signUpView
是XIB,下一个代码为:
class func signUpView() -> UIView {
return UINib(nibName: "SignUpView", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! UIView
}
现在,我想点击我的XIB上的按钮,删除我的blurView
。为此我做了:
UIView.animateWithDuration(0.5, delay: 0.1, options: [.CurveEaseOut], animations: { () -> Void in
self.removeFromSuperview()
ViewController().blurView!.removeFromSuperview()
}, completion: { _ in
})
但它什么也没有返回。当我也尝试调用ViewController函数removeXIB()
时:
func removeXIB() {
self.blurView.removeFromSuperview()
}
来自我的SignUpView类,它崩溃了self.blurView
等于nil的错误。
如何解决此问题并从blurView
XIB类中删除ViewController SignUpView
?
答案 0 :(得分:0)
ViewController()
会返回ViewController
类的新实例,
它没有初始化blurView
和springUpView
(当你尝试将强制展开应用于blurView
属性值时,这就是你崩溃的原因,当它是nil
时。
您需要的是实例化视图的ViewController
的具体实例
顺便说一下,管理视图的方法很糟糕。您的视图需要有某种委托,并要求其代理人对用户的操作做出反应(在您的情况下从superview中删除视图)