我正在写一个Cocoa应用程序。一个对话框有3个选项卡,一些选项卡需要更多的加载时间,所以我想懒得加载它们。由于每个Tab都是一个NSTabViewItem类,所以我试图从它派生并覆盖它的view属性。在视图getter方法中,我使用ViewController加载视图并返回。在调试中,我发现NSTabViewItem -view方法被正确调用,但之后NSTabView尝试设置Initial FirstResponder并崩溃并显示消息:
***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'在 - [NSTabViewItem setInitialFirstResponder:]中,第一个响应者必须从选项卡视图项的视图下降。 (项目:无效的响应者:)'
我试图覆盖-initialFirstResponder方法以返回我加载的视图的子视图,但它仍然在同一个地方崩溃。
有谁知道如何让它正常工作?通过派生NSTabViewItem来实现这一点也是正确的方法吗?
谢谢! -Jonny
答案 0 :(得分:0)
好的,我现在理解这个例外。 NSTabViewItem
有其视图,因此我应该使用其视图并将我的新视图添加为子视图,例如:
-(NSView*)view {
NSView* view = [super view];
NSVIew* myView = //load view from nib
[view addSubView:myView];
return view;
}