我最近开始学习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;
}
答案 0 :(得分:17)
简而言之,覆盖loadView
并将self.view
设置为您的视图。在设置之前,你需要给它一个框架。
loadView
的默认实现是尝试加载nib的地方。如果你不想要,你打算覆盖它。