打开NSWindow的多个实例

时间:2015-06-12 06:17:45

标签: cocoa nswindow

我正在构建一个聊天应用程序,我有一个NSWindow的出口。现在我想打开窗口的多个实例。我该怎么做?我没有使用窗口控制器makeKeyAndOrderFront:方法只会打开一个实例

请帮助我,我无法在任何地方找到它

1 个答案:

答案 0 :(得分:3)

所以我知道这个问题已经过时了,但无论如何我都会回答这个问题,因为我在努力解决这个问题并且没有太多关于它的信息。

您需要将每个窗口保持在范围内,以便不会收集垃圾。您可以使用NSWindowControllers的集合来完成此操作。我把这个集合放在AppDelegate.swift中,这可能是错的,但除了主窗口控制器之外,我看不到其他任何地方放置它,这也是错误的。

您可以这样声明:

var exampleListOfWindows = [NSWindowController]()

您需要以编程方式创建新窗口,然后将它们添加到您的收藏中。

你可以用这样的函数来做到这一点:

func openNewWindow(someParameter: String) {

    let storyboard = NSStoryboard(name: "Main",bundle: nil)

    if let exampleViewController = storyboard.instantiateControllerWithIdentifier("exampleStoryboardId") as? ExampleViewController{

        let newWindow = NSWindow(contentViewController: exampleViewController)

        // you'll probably need to pass your window some data and because I hate myself I choose to do it like this
        exampleViewController.passSomeDataToNewWindowFunction(someParameter)

        newWindow.makeKeyAndOrderFront(self)

        let controller = NSWindowController(window: newWindow)
        exampleListOfWindows.append(controller)
        controller.showWindow(self)

    }
}