我使用标准的Xcode Swift模板(使用StoryBoards)创建了一个新的OS X Cocoa应用程序。
我在AppDelegate.swift中实现了一个IBAction来处理用户从“文件”菜单中选择“打开...”时的操作。如果所选文件是有效的图像文件,则我创建一个NSImage,然后希望在ViewController的视图中显示它。
@IBAction func openFile(sender: NSMenuItem) {
var openPanel = NSOpenPanel()
openPanel.beginWithCompletionHandler { (result :Int) -> Void in
if result == NSFileHandlingPanelOKButton {
if let imageURL = openPanel.URL {
let image = NSImage(contentsOfURL: imageURL)
// PRESENT image IN THE VIEW CONTROLLER
}
}
}
然而,我没有找到任何方法可以从AppDelegate连接到ViewController。我只能找到建议,在AppDelegate中查看self.window!但是在AppDelegate中并没有窗口。
谢谢, Michael Knudsen
NSViewController
不在响应链中,因此请将您的控制器设置为窗口的代理(NSWindow
在响应链中)。 - bluedome