首页 > 解决方案 > Mac OSX 关闭 Show Segue 提出的多视图控制器

问题描述

我有一个视图控制器,我在其中呈现另一个带有“显示”类型 segue 的视图控制器。我想允许呈现视图的多个副本,然后当呈现视图控制器关闭时,关闭显示 segue 呈现的任何仍处于打开状态的视图。如果我使用弹出框,那么任何先前存在的视图都会被忽略,这不是我想要的操作。有没有办法做到这一点?

标签: swiftmacosseguensviewcontroller

解决方案


这是我想出的解决方案。基本上在 prepareforsegue 方法中捕获视图控制器数组,然后在 viewwilldisappear 方法中遍历数组并关闭与视图控制器关联的窗口。

准备继续

    override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
    print("in prepare for seque")

    if (segue.identifier!.rawValue == "viewSegmentsSegue"){
        let viewController = segue.destinationController as! NSViewController
        self.segmentsArray?.append(viewController)
        }

}

视图将消失()

    override func viewWillDisappear() {
    for segments:NSViewController in segmentsArray!{
        segments.view.window?.close()

    }
}

推荐阅读