首页 > 解决方案 > 仅在关闭时快速打开自定义弹出窗口

问题描述

我有一个弹出窗口,我这样称呼它:

if !MainView.isOpen.isPopupOpen{
        if #available(iOS 13.0, *){
            MainView.isOpen.init(isPopupOpen: true)
                var popOverVc = UIStoryboard(name: "CreateSurvey", bundle: 
  nil).instantiateViewController(identifier: "greatPopup") as! PopupViewController
                   self.addChild(popOverVc)
                                  popOverVc.view.frame = self.view.frame
                                  self.view.addSubview(popOverVc.view)
                                  popOverVc.didMove(toParent: self)
            }
    }
}

我无法检查它是否为假,因为 xcode 说:实例成员 'isPopupOpen' 不能用于类型 'MainView.isOpen' 我试图使用结构获取当前状态,但这没有成功。这是我的结构:

  struct  isOpen {
  var isPopupOpen: Bool!
}

这就是我试图在弹出视图控制器中更改我的结构的值的方式:

@IBAction func removeAnimation(_ sender: Any) {
    MainView.isOpen.init(isPopupOpen: false)
    removeAnimate()
}

有没有其他方法可以解决仅在关闭时打开弹出窗口的问题,或者我该如何解决这个问题?

谢谢

标签: swiftpopupwindow

解决方案


您可以检查视图的子视图是否包含您添加的视图/视图控制器。可以通过以下方式实现:

if self.view.subviews.contains(myView) == false {
  // Open popup since it is closed, not presented in the view
  // Or, in your case self.children.contains(popupView)
} else {
  // Do Nothing
}

推荐阅读