2016-06-28 33 views
0

我想创建一个自定义NSViewController,只需在viewDidLoad登出一些东西。在iOS中,这是非常微不足道的,并且工作正常。但是,当我在NSWindow上设置contentViewController(我认为它与iOS中的RootViewController类似?)时,它会尝试从笔尖加载它。简单的可可应用程序与ViewController

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 


    self.ABViewController = [[ABViewController alloc] init]; 

    self.window.contentViewController = self.ABViewController; 


} 

2016年6月28日09:15:42.186 TestApp [32103:33742217] - [NSNib _initWithNibNamed:束:选择:]无法加载nibName:ABViewController在束(空)。

我错过了关于Cocoa与iOS不同的一些假设,这些假设阻止了我简单地设置viewController?

回答

0

NSViewController不具有相同的行为UIViewController,因为它不会自动知道要寻找具有相同的名称本身就是一个笔尖文件。换句话说,它不会自动知道要查找ABViewController.nib文件。

修复这只是重写nibName方法ABViewController最简单的方法:

@implementation ABViewController 

- (NSString *)nibName { 
    return NSStringFromClass([self class]); 
} 

@end 

注意,使用NSStringFromClass()通常比试图硬编码字符串更好,因为这样会生存重构。

你可以调用[[ABViewController alloc] init];像以前NSViewController的默认init方法将从您的覆盖nibName方法获得笔尖名。

0

它看起来像你的程序不会找到视图的定义文件。您需要为故事板做这样的事情:

UIStoryboard *sboard = [UIStoryboard storyboardWithName:@"StoryboardFileName" 
              bundle:NSBundle.mainBundle()]; 
SecondViewController *vc1 = [sboard instantiateInitialViewController]; 
相关问题