【发布时间】:2019-02-18 15:25:53
【问题描述】:
我有一个视图控制器,我在其中呈现另一个具有“显示”类型segue 的视图控制器。我想允许呈现视图的多个副本,然后当呈现视图控制器关闭时,关闭显示 segue 呈现的任何仍处于打开状态的视图。如果我使用弹出框,那么任何先前存在的视图都会被忽略,这不是我想要的操作。有没有办法做到这一点?
【问题讨论】:
标签: swift macos segue nsviewcontroller
我有一个视图控制器,我在其中呈现另一个具有“显示”类型segue 的视图控制器。我想允许呈现视图的多个副本,然后当呈现视图控制器关闭时,关闭显示 segue 呈现的任何仍处于打开状态的视图。如果我使用弹出框,那么任何先前存在的视图都会被忽略,这不是我想要的操作。有没有办法做到这一点?
【问题讨论】:
标签: swift macos segue nsviewcontroller
这是我想出的解决方案。基本上在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()
}
}
【讨论】:
我不太明白你的问题,但也许你可以在实际的视图控制器中使用子视图控制器。
【讨论】: