2010-01-27 44 views
0

我在写一个可可应用程序。一个对话框有3个选项卡,一些选项卡需要更多的加载时间,所以我想要加载他们懒惰。由于每个Tab是一个NSTabViewItem类,所以我试图从它派生并覆盖它的视图属性。在视图getter方法中,我使用ViewController来加载视图并返回。在调试中,我发现NSTabViewItem -view方法被调用正确,但之后,NSTabView尝试设置初始FirstResponder并崩溃消息:派生自NSTabViewItem

***由于未捕获异常'NSInvalidArgumentException'终止应用程序,原因:'In - [NSTabViewItem setInitialFirstResponder:],第一个响应者必须从标签视图项目的视图中下降。 (Item:Invalid responder :)'

我试着重写-initialFirstResponder方法来返回我加载视图的子视图,但它仍然崩溃在同一个地方。

没有人知道如何让它正常工作吗?也正是通过派生NSTabViewItem来做到这一点的正确方法?

谢谢! -Jonny

回答

0

好的,我明白了现在的例外。该NSTabViewItem有其看法,所以我应该使用其观点,并添加我的新视图作为一个子视图,如:

-(NSView*)view { 
    NSView* view = [super view]; 
    NSVIew* myView = //load view from nib 
    [view addSubView:myView]; 
    return view; 
} 
+0

或者就叫 - [NSTabViewItem的setView:]跟你的新看法 – 2010-01-27 13:49:50

+0

是的,我想重写-view方法会让我有机会延迟加载选项卡视图,但是看起来NSTabView始终在启动时加载所有视图。 – Jonny 2010-02-04 03:27:01