在没有笔尖的情况下创建自定义NSViewController

时间:2013-07-24 22:29:58

标签: objective-c macos cocoa

我最近开始学习Objective-C,但我遇到了一个小问题。我正在尝试使用没有笔尖的自定义视图控制器,因此视图是在代码中创建的。视图控制器本身是在AppDelegate中创建的。

当我运行程序时,它首先显示一个默认的空窗口。关闭此窗口后,弹出第二个窗口,其中正确包含视图。我显然不希望第一个窗口出现,但我不知道是什么导致它。我在这个主题上找到的唯一信息是用于iOS开发,这不完全相同。

我也收到这条消息,我不确定它是什么意思:无法将动作orderFrontStandardAboutPanel:连接到类MainViewController的目标

的AppDelegate:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    mainViewController = [[MainViewController alloc] initWithFrame:_window.frame];
    _window.contentView = mainViewController.view;
}

MainViewController:

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithNibName:nil bundle:nil];
    if (self)
    {
        [self setView:[[MainView alloc] initWithFrame:frame]];
        [self loadView];
    }
    return self;
}

1 个答案:

答案 0 :(得分:17)

简而言之,覆盖loadView并将self.view设置为您的视图。在设置之前,你需要给它一个框架。

loadView的默认实现是尝试加载nib的地方。如果你不想要,你打算覆盖它。