2016-03-02 59 views
1

我有一个视图控制器有一个按钮。当点击该按钮时,第二个vc将添加到第一个视图控制器上。当我点击第二个vc上的按钮时,它会从超级视图中移除....但是这并不会触发我的方法被调用的视图。因此,几件事情不像重新加载桌面视图...Swift removeFromSuperview不会触发viewWillAppear

有人可以解释如何让这个工作? 感谢

更新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

你能发表一些代码吗?你如何添加第二个VC? – ClockWise

+0

代码添加,对此感到遗憾 – RubberDucky4444

回答

1

与您的代码的问题是,你做不推送新的UIViewController,你只需在它上面添加一个UIView。 ViewWillAppear只会在UIViewController不是堆栈顶部的那个触发器时触发,并且顶部的触发器被删除(使用关闭)。

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

这些线路只是添加UIViews为子视图到您当前UIViewController.view,使活性的UIViewController仍然是一个你在,这意味着移除子视图不会调用任何的回调方法UIViewController中。我相信你会更好地打电话给你的方法之前,你做ViewController().blurEffectView.removeFromSuperview()

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