如何在Swift中从UIApplication删除窗口

时间:2018-08-30 13:05:58

标签: swift xcode uiwindow uiapplication

在单击按钮的同时,我正在使用以下代码移至另一个视图控制器。

var window: UIWindow?
window = UIWindow.init(frame: UIScreen.main.bounds)
window?.autoresizesSubviews = true
window?.autoresizingMask = [.flexibleWidth, .flexibleHeight]
let trackingViewController = LoginCameraViewController.init(screen: 
.main)
window?.rootViewController = trackingViewController
window?.addSubview((trackingViewController?.view)!)
window?.makeKeyAndVisible()
window?.layoutSubviews()

每单击一次按钮,都会向应用程序添加一个新窗口。我要删除添加的最新窗口。 使用以下代码可以知道应用程序中存在的窗口数。

let windowz = UIApplication.shared.windows
print("subviews",windowz)

4 个答案:

答案 0 :(得分:1)

我认为您在iOS中的导航概念不正确。 Window就像其中出现ViewController的根对象。因此,您首先寻找的解决方案可能是UINavigationController

Apple Documentation on Navigation

答案 1 :(得分:1)

您应该使用View Controller而不是添加窗口,并在要删除窗口的位置将其弹出。 窗口只是应用程序的一个对象,将包含视图。 请更正您的理解并使用View控制器。

答案 2 :(得分:0)

  

对于iOS 13,我可以通过这种方式实现

我创建了一个数组,其中包含用来显示此新viewController的窗口,

var arrWindow = [UIWindow]()
arrWindow.append(yourNewWindow)
  

//注意:这将作为强大的参考存储,因此需要将其删除。

还将原始窗口存储在变量

let originalWindow = yourOriginalWindow
  

//注意:对此同样适用,它将存储为强引用,因此需要将其删除。

在删除时,有很多方法可以完成,但这对我来说是最合适的方法,

 func removeAppendedWindow() {

     for window in arrWindow {
         if window != originalWindow {
              if let index = arrWindow.index(of: window) {
                  window.isHidden = true
                  arrWindow.remove(at: index)
              }
         }
     }
}

答案 3 :(得分:-1)

在下面的代码窗口中,z是普通数组。

^(?!.* )(?!.*[<>%:&\\])(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^a-zA-Z0-9<>%:&\\]).{8,256}$

您可以使用

删除最后一个
let windowz = UIApplication.shared.windows