os x相当于ios的rootViewController

Mic*_*elC 5 cocoa cocoa-touch macruby rubymotion

什么是OS X相当于ios'(Ruby风格):

@window.rootViewController = NSViewController.alloc.initWithNibName(nil, bundle: nil)
Run Code Online (Sandbox Code Playgroud)

有两个方面:

  • 处理os x中缺少rootViewController
  • 在os x上执行相当于initWithNibName(nil,bundle:nil)的操作

我正在尝试用代码构建一个窗口(没有nib)......并按照Pragmatic的RubyMotion程序员指南(为iOS编写).

Sen*_*ful 5

在我的情况下,我有一个窗口拥有的单个视图控制器,所以以下代码对我有用:

let viewController = NSApplication.sharedApplication().keyWindow!.contentViewController as! MyViewController
Run Code Online (Sandbox Code Playgroud)

MyViewController我的NSViewController子类在哪里.


Ber*_*ter 3

OS X 应用程序中没有“rootViewController”的概念。这是因为应用程序由一个或多个窗口和/或菜单栏组成,其中没有一个是“根”。

但是,您可以从视图控制器开始找到窗口控制器:

[[[self view] window] delegate];
Run Code Online (Sandbox Code Playgroud)

如果您希望在窗口控制器上调用自定义方法,那么最好创建一个委托,这样有关控制器的假设就不会给您带来麻烦。

相当于NSViewController.alloc.initWithNibName(nil, bundle: nil)

[[NSViewController alloc] initWithNibName:nil bundle:nil];

方法调用嵌套在方括号中,具有多个参数的方法很简单label1:parameter1 label2:parameter2...

不过,通常情况下,您会有一个NSViewController可以实例化的自定义子类。