Swift 如何查看和删除子视图?

Swift 如何查看和删除子视图?,swift,tableview,dismiss,Swift,Tableview,Dismiss,要执行要求的操作,可以将覆盖视图作为可选的类级属性,并在视图出现时尝试将其删除 let overlayView = UIView() overlayView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.35) overlayView.frame = self.view.bounds func tableView(_ tableView: UITableView, didSelectRowAt indexPath

要执行要求的操作,可以将覆盖视图作为可选的类级属性,并在视图出现时尝试将其删除

let overlayView = UIView()

overlayView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.35)

overlayView.frame = self.view.bounds

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    if indexPath.row == 0{ self.view.addSubview(overlayView) {

        performSegue(withIdentifier: "language", sender: nil)
    }
}
或者,您可以使用协议/委托模式通知VC1 VC2已删除,并使用该方法删除覆盖视图。这是一种更清洁的解决方案


然而,如果你正在做我认为你要做的事情(见我的评论),我认为有一个更好的方法——在第二个视图控制器中处理所有这些。通过将第二视图控制器的主视图设置为alpha,使其进行掩蔽,然后将容器视图添加到该视图的中心,并将所有内容/功能添加到该容器视图中。这样,当您关闭第二个视图时,模糊层将随之消失。

以第二个视图控制器发送模式显示@iAction func close_click(sender:Any){dismise(动画:true,完成:nil)}删除子视图?overlayView.subviews.forEach({$0.removeFromSuperview()})//这可以在overlayView.subviews.map({$0.removeFromSuperview()})上完成操作//这将返回已修改的array@DhavalRaval问题第二个视图控制器单击但不关闭一个视图控制器子视图删除?我不明白exactly@DhavalRaval有两个视图控制器。1.视图控制器self.view.addSubview(overlayView)2.view控制器removeSubview如何类VC1:UIViewController{var overlayView:UIView?}类VC2:UIViewController{overlayView?.removeFromSuperView()}如何删除?不明白您的问题吗?在上面的答案中有三种可能的方法!最简单的方法是将覆盖视图设置为可选,然后将
overlayView?放入
视图中。在
视图中将出现

class VC1: UIViewController {
  var overlayView: UIView?


override func viewDidAppear() {
  super.viewDidAppear()
  overlayView?.removeFromSuperView()
}