IOS swift 我如何在删除超级视图或在子视图中关闭它之间进行检查
IOS swift how can I Check between remove super view or dismissing it in subviews
我有一个似乎无法正确解决的难题。我有一个 Main_Page 然后是不同的子视图,例如 Menu_Subview 和 Profile_Subview 。我的问题是我不知道是使用 Dismiss 还是 remove fromsuperview,这会导致应用程序崩溃。例如
如果我从 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函数中检测上一个controller中是否有superview或subview?
我所有的子视图都打开如下
@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
关闭它,因为它是另一个视图中的视图。我想,它崩溃了,因为你的 ViewController 没有超级视图。如果你已经打开了很多,并且你不想返回并以适当的方式重写它,你可以只检查你的视图是否有超级视图,并根据你收到的布尔值选择关闭或删除FromSuperview - if yourView.superview != nil
我有一个似乎无法正确解决的难题。我有一个 Main_Page 然后是不同的子视图,例如 Menu_Subview 和 Profile_Subview 。我的问题是我不知道是使用 Dismiss 还是 remove fromsuperview,这会导致应用程序崩溃。例如
如果我从 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函数中检测上一个controller中是否有superview或subview?
我所有的子视图都打开如下
@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
关闭它,因为它是另一个视图中的视图。我想,它崩溃了,因为你的 ViewController 没有超级视图。如果你已经打开了很多,并且你不想返回并以适当的方式重写它,你可以只检查你的视图是否有超级视图,并根据你收到的布尔值选择关闭或删除FromSuperview - if yourView.superview != nil