让我在与我合作的计划中解释我的问题。该程序由一个主窗口组成,该窗口具有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。在连接这两个时,我是否错过了一步?
谢谢!
答案 0 :(得分:0)
我遗漏了一些非常重要的东西!我没有在我的XIB文件中利用非常重要的文件所有者。这使我能够在两个XIB之间进行链接并包含View Controller属性。
我的答案完全取自最高的答案here(同样地,由其提问者Dale Dietrich撰写)。