1

让我在我正在使用的程序的上下文中解释我的问题。这个程序由一个主窗口组成,它有一个 NSOutlineView 和一个 NSTabView。NSTabViewItems(及其对应的子视图)在运行时动态添加(使用 Cmd+T)。上述子视图是单独的 XIB 文件的一部分;子视图由各种简单的输入控件组成。正如我刚刚描述的那样,所有这些都有效。

我希望 NSOutlineView 为其显示的各种项目提供上下文菜单,这些项目可能会操纵当前活动的 NSTabViewItem 子视图中的某些控件。

我看到的最明显的方法是(这只是一个简化的例子,不是我的实际代码):

NSOutlineViewSubclass.h

@interface ... : NSOutlineView
    @property (weak) IBOutlet NSTabView *tabView;
@end

NSOutlineViewSubclass.m

@implementation ...
    @synthesize tabView;

    - (void)foo
    {
        NSTabViewItem *currentTab = [tabView selectedTabViewItem];
        TabViewSubView *tabViewSubView = [currentTab view];

        //
        //Manipulate subview controls here
        //
    }

@end

这似乎违反了 MVC 范式,因为我直接在视图中操作数据(在本例中为 NSOutlineViewSubclass),而不是通过控制器。但是,就目前而言,我唯一一次使用 NSOutlineViewSubclassViewController 是首先为新选项卡生成一个新视图。我的 NSOutlineViewSubclass 甚至不知道它是 NSOutlineViewSubclassViewController。我错过了连接这两者的一步吗?

谢谢!

4

1 回答 1

0

我错过了一些非常重要的东西!我没有利用我的 XIB 文件中非常重要的文件所有者。这使我能够在两个 XIB 之间进行链接并包含一个 View Controller 属性。

我完全从这里的最佳答案中得出了我的答案(同样,由提问者戴尔·迪特里希(Dale Dietrich)撰写)。

于 2013-09-15T04:13:24.550 回答