Swift Cocoa:根据应用程序委托的输入加载不同的视图控制器
我试图通过AppDelegate触发2个不同流中的1个,但似乎遇到了困难 如下图所示: 如果只有一个视图控制器可以绑定到主窗口控制器中,如何实例化这两个不同的视图控制器 我用下面的代码设法用“addChildWindow”触发了它们,但是我无法切换到任何后续的视图控制器 下面是我用来实例化视图控制器的代码:Swift Cocoa:根据应用程序委托的输入加载不同的视图控制器,swift,macos,appdelegate,Swift,Macos,Appdelegate,我试图通过AppDelegate触发2个不同流中的1个,但似乎遇到了困难 如下图所示: 如果只有一个视图控制器可以绑定到主窗口控制器中,如何实例化这两个不同的视图控制器 我用下面的代码设法用“addChildWindow”触发了它们,但是我无法切换到任何后续的视图控制器 下面是我用来实例化视图控制器的代码: if let pboardString = pboard.stringForType(NSStringPboardType){ print(pboardStr
if let pboardString = pboard.stringForType(NSStringPboardType){
print(pboardString)
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let destcontroller = storyboard.instantiateControllerWithIdentifier("pickProject") as! WizardTextFromPasteboardVC
destcontroller.weburlFromPaste = pboardString
let numWindows = NSApplication.sharedApplication().windows
if let window = NSApplication.sharedApplication().mainWindow {
if numWindows.count >= 1{
let childWindow = NSWindow(contentViewController: destcontroller)
window.addChildWindow(childWindow, ordered: .Above)
}
else if numWindows.count == 0 {
window.contentViewController = destcontroller
}
没有必要保留提供窗口内容的默认序列。若您删除它并提供两个可以通过id实例化的视图控制器,那个么您的应用程序委托可以决定启动何时完成 例如:
let selection: Int = 2
func applicationDidFinishLaunching(aNotification: NSNotification) {
let storyboard = NSStoryboard(name: "Main", bundle: nil)
var controller: NSViewController
if selection == 1 {
controller = storyboard.instantiateControllerWithIdentifier("view_controller") as! NSViewController
} else {
controller = storyboard.instantiateControllerWithIdentifier("view_controller_2") as! NSViewController
}
let window = NSApp.windows[0]
window.contentViewController = controller
}
为什么不在主窗口上创建两个按钮,每个按钮都连接到相应的视图控制器?Phillip Mills-谢谢-但是如果我这样做-我以后如何从这些控制器调用控制器。。。使用segues?就我所知,在任何其他情况下都一样。我刚刚从我的第二个控制器上的一个按钮在故事板上连接了一个序列,将第三个控制器显示为一张纸,效果很好。