让我在我正在使用的程序的上下文中解释我的问题。这个程序由一个主窗口组成,它有一个 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。我错过了连接这两者的一步吗?
谢谢!