Swift removeFromSuperview不会触发viewWillAppear

时间:2016-03-02 07:47:00

标签: ios swift swift2

我有一个带按钮的视图控制器。当点击该按钮时,第二个vc将添加到第一个视图控制器上。当我点击第二个vc上的一个按钮时,它会从superview中移除....但是这不会触发我调用方法的viewwillappear。因此,有些事情不像重新加载tableview那样......

有人可以解释一下如何让它发挥作用吗? 感谢

更新1个已添加的代码

我如何添加第二个VC

let blurEffectView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.Dark))

    if !UIAccessibilityIsReduceTransparencyEnabled()
    {
        self.view.backgroundColor = UIColor.clearColor()

        blurEffectView.frame = self.view.bounds
        blurEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
        blurEffectView.alpha = 0
    }
    newView.view.alpha = 0.0

    self.view.addSubview(blurEffectView)
    self.view.addSubview(newView.view)

    UIView.animateWithDuration(0.8){

        self.newView.view.alpha = 1
        self.blurEffectView.alpha = 1
    }

我如何删除第二个VC

 ViewController().blurEffectView.removeFromSuperview()

1 个答案:

答案 0 :(得分:2)

您的代码的问题在于您没有推送新的UIViewController,只需在其上添加UIView即可。 ViewWillAppear只会在UIViewController不是堆栈顶部并且顶部的那个被删除时触发(使用dismiss)。

self.view.addSubview(blurEffectView)
self.view.addSubview(newView.view)

这些行只是将UIViews作为子视图添加到当前的UIViewController.view中,因此活动的UIViewController仍然是您所在的那个,这意味着删除子视图不会调用任何回调方法UIViewController中。我相信在你做ViewController().blurEffectView.removeFromSuperview()

之前,最好先调用你的方法

我可能会误解,因为这只是一段代码而且我甚至不知道它的功能是什么。如果你需要进一步的帮助,如果你可以上传一个示例项目会更容易。 / p>