IOS迅速如何在删除超级视图或在子视图中关闭它之间进行检查



我有一个似乎无法正确解决的困境。我有一个Main_Page然后不同的子视图,例如Menu_Subview和Profile_Subview。我的问题是我不知道是使用"关闭"还是从超级视图中删除,这导致应用程序崩溃。例如

如果我从Main_Page到Profile_Subview,那么我可以像这样回去,它有效

   @IBAction func backAction(_ sender: UIButton) {
       if let viewWithTag = self.view {
            viewWithTag.removeFromSuperview()
        }  
    }

如果我从Main_Page到Menu_Subview再到Profile_Subview,那么我无法使用上面的代码,因为它崩溃了,我必须使用它

 @IBAction func backAction(_ sender: UIButton) {
        self.dismiss(animated: true, completion: nil)
    }

如何在backAction函数中检测上一个控制器中是否存在超级视图或子视图?

我所有的子视图都像下面这样打开

   @IBAction func Menu_Action(_ sender: Any) {
        let Popup = UIStoryboard(name: "Main", bundle: 
      nil).instantiateViewController(withIdentifier: "Menu_Subview")
      as! Menu_Subview
        self.addChildViewController(Popup)
        Popup.view.frame = self.view.frame
        self.view.addSubview(Popup.view)
        Popup.didMove(toParentViewController: self)
    }

你打开的内容addChildViewController - 你应该通过关闭关闭,因为它是ViewController,当你打开时addSubview - 按removeFromSuperview关闭它,因为它是另一个视图中的视图。我想,它崩溃了,因为你的视图控制器没有超级视图。如果你打开了很多,并且你不想回去以正确的方式重写它,你可以检查你的视图是否有超级视图,并根据你收到的布尔值选择关闭或删除FromSuperview - if yourView.superview != nil

相关内容

  • 没有找到相关文章

最新更新