我有一个ViewControllerOne。 ViewControllerOne通过Ctrl-Drag(在故事板中)连接到菜单按钮mBtn(这意味着我不知道如何以编程方式实现)。

单击此mBtn,将显示一个ViewOne(当前模态)。该ViewOne绑定到ViewControllerOne。 ViewOne有一个按钮btnOne。

单击btnOne,我希望关闭ViewOne,并显示ViewTwo。 ViewTwo属于ViewControllerTwo和WindowControllerTwo。

WindowControllerTwo-ViewControllerTwo绑定是在新项目上创建的标准情况。

我在IBAction中为ViewControllerOne中的按钮btnOne提供了以下代码:

@IBAction func onbtnOnePressed(sender: AnyObject){

        let m_WindowControllerTwo = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"), bundle: nil).instantiateController(withIdentifier: NSStoryboard.SceneIdentifier("WindowControllerTwo")) as! NSWindowController // I have no custom class for the window controller as I don't really know what I can use it for ...

        let m_ViewTwo = WindowControllerTwo.contentViewController as! ViewControllerTwo // my custom class for ViewTwo

        m_ViewTwo.attributeIWantToPassToThisView = self.x // an attribute I want to pass from view a to view b

        m_WindowControllerTwo.contentViewController = m_ViewTwo // passing the attribute from a to b

        m_WindowControllerTwo.showWindow(self) // this does not work

        self.dismiss(nil)  // see NOTE
    }


此代码实际上不起作用。在逐步调试时,我看到窗口/视图闪烁,但没有出现...

注意:我可以将btnOne按钮和ctrl拖动连接到ViewControllerTwo。这可行。但是,当前的ViewOne并不会被解雇!

问题:我在这里做错了什么?在iOS中,swift也适用。我不太了解WindowController,所以我需要您的建议。

最佳答案

代替此:m_WindowControllerTwo.showWindow(self)

采用:

let application = NSApplication.shared()
application.runModal(for: wordCountWindow) //this will present WindowControllerTwo modally.


然后关闭当前的控制器,添加以下行:PresentWindowControllerName.close()

关于swift - 打开窗口+来自其他 View Controller 的 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49110667/

10-09 18:33