10

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

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

我也收到这条消息,我不太确定它的含义: 无法将操作 orderFrontStandardAboutPanel: 连接到类 MainViewController 的目标

应用委托:

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

主视图控制器:

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

1 回答 1

25

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

的默认实现loadView是它尝试加载 nib 的位置。如果您不想这样做,您打算覆盖它。

于 2015-02-05T01:12:18.027 回答