【问题标题】:deriving from NSTabViewItem从 NSTabViewItem 派生
【发布时间】:2010-01-27 07:37:17
【问题描述】:

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

*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“在 -[NSTabViewItem setInitialFirstResponder:] 中,第一响应者必须从选项卡视图项的视图下降。 (项目:无效响应者:)'

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

有人知道如何让它正常工作吗?通过派生 NSTabViewItem 也是正确的方法吗?

谢谢! -乔尼

【问题讨论】:

    标签: cocoa nstabview


    【解决方案1】:

    好的,我现在理解异常了。 NSTabViewItem 有它的视图,所以我应该使用它的视图并将我的新视图添加为子视图,例如:

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

    【讨论】:

    • 或者只是用你的新视图调用 -[NSTabViewItem setView:]
    • 是的,我在想重写 -view 方法会让我有机会延迟加载选项卡视图,但看起来 NSTabView 总是在启动时加载所有视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2013-10-18
    相关资源
    最近更新 更多