如何打开第二个 NSWindow?

Posted

技术标签:

【中文标题】如何打开第二个 NSWindow?【英文标题】:How to open second NSWindow? 【发布时间】:2019-02-25 17:24:13 【问题描述】:

我试图在单击 NSTableViewCell 时打开第二个 NSWindow。到目前为止,这是我的代码:

func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool 
    IndiFlightWC.loadWindow()
    IndiFlightWC.showWindow(nil)
    IndiFlightWC.setMap(indiFlight: FlightList[row]!)
    return true

IndiFlightWC 的初始化如下:

var IndiFlightWC = IndiFlightWindowController()

我在 IndiFlightWindowController 的 windowDidLoad 中放置了一个断点,但它永远不会到达它。所以我的问题是如何正确显示新窗口?

谢谢!

【问题讨论】:

【参考方案1】:

您的 init 方法几乎可以肯定是不正确的。

如果您查看documentation for NSWindowController,您会看到其中列出了四种不同的初始化方法。它们都带参数。

您的IndiFlightWindowController xib 是否包含在您的项目中?为什么不试试let indiFlightWC = IndiFlightWindowController(windowNibName: "IndiFlightWindowController") 看看会发生什么。

其他几个提示:

1) 变量名应以小写字母开头。使用indiFlightWC 而不是IndiFlightWC 作为变量名。大写应该用于类。

2) loadWindow isn't needed 因为showWindow 应该自动调用loadWindow

【讨论】:

以上是关于如何打开第二个 NSWindow?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NSWindow 带到前面和当前空间?

打开第二个窗口后隐藏主窗口?另外,当第二个窗口被用户关闭时,主窗口如何重新出现?

如何打开第二个表格?

如何打开相邻选项卡中的第二个链接? [复制]

在 Swift 中打开一个关闭的 NSWindow 会导致应用程序崩溃

如何从第二个标签窗口打开第一个标签窗口的网址页面?