OS X相当于ios'(Ruby风格):
@window.rootViewController = NSViewController.alloc.initWithNibName(nil, bundle: nil)
有两个方面:
我正在尝试在代码中构建一个窗口(没有nib)...并遵循Pragmatic的RubyMotion程序员指南(为iOS编写)。
答案 0 :(得分:5)
在我的情况下,我有一个窗口拥有的视图控制器,所以以下代码对我有用:
let viewController = NSApplication.sharedApplication().keyWindow!.contentViewController as! MyViewController
其中MyViewController
是我的NSViewController
子类。
答案 1 :(得分:3)
OS X应用程序中没有“rootViewController”的概念。这是因为应用程序由一个或多个窗口和/或菜单栏组成,其中没有一个是“根”。
但是,您可以从视图控制器开始找到窗口控制器:
[[[self view] window] delegate];
如果您希望在窗口控制器上调用自定义方法,那么create a delegate可能会更好,因此关于控制器的假设不会让您遇到麻烦。
相当于NSViewController.alloc.initWithNibName(nil, bundle: nil)
:
[[NSViewController alloc] initWithNibName:nil bundle:nil];
方法调用嵌套在方括号中,具有多个参数的方法只是label1:parameter1 label2:parameter2...
但是,通常情况下,您将拥有一个自定义NSViewController
子类,而不是实例化。
答案 2 :(得分:1)
如果你想在iOS中重置rootViewController,可以使用以下代码:
let storyBoard = NSStoryboard(name: NSStoryboard.Name(rawValue:"Main"), bundle: Bundle.main)
let homeViewController = storyBoard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(rawValue: "SIHome")) as! HomeViewController
NSApp.keyWindow?.contentViewController = homeViewController
NSApp
是NSApplication.shared()