为什么我无法从其他控制器中删除视图?

时间:2016-02-25 11:18:44

标签: ios swift model-view-controller xib

在我的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

1 个答案:

答案 0 :(得分:0)

ViewController()会返回ViewController类的新实例, 它没有初始化blurViewspringUpView(当你尝试将强制展开应用于blurView属性值时,这就是你崩溃的原因,当它是nil时。

您需要的是实例化视图的ViewController的具体实例

顺便说一下,管理视图的方法很糟糕。您的视图需要有某种委托,并要求其代理人对用户的操作做出反应(在您的情况下从superview中删除视图)