【问题标题】:Mac OSX Dismiss multiple view controller presented by Show SegueMac OSX 关闭 Show Segue 提出的多视图控制器
【发布时间】:2019-02-18 15:25:53
【问题描述】:

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

【问题讨论】:

    标签: swift macos segue nsviewcontroller


    【解决方案1】:

    这是我想出的解决方案。基本上在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)
            }
    
    }
    

    viewwilldisappear()

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

    【讨论】:

    • 这是唯一适用于 macos 的解决方案。太棒了!
    【解决方案2】:

    我不太明白你的问题,但也许你可以在实际的视图控制器中使用子视图控制器。

    【讨论】:

    • 我想知道如何在 Mac OSX 的 IBAction 或 viewwilldisappear 方法中从呈现视图中消除由 show segue 创建的多个视图。视图 A 创建多个副本视图 B。如何从视图 A 中消除任何现有的视图 B?
    • 嗨,抱歉,我对 Mac OS X 的编码不熟悉,所以我帮不上忙。不幸的是,我不知道你还能怎么做...也许可以尝试使用苹果的文档?
    猜你喜欢
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    相关资源
    最近更新 更多