Позвольте мне объяснить мою проблему в контексте программы, с которой я работаю. Эта программа состоит из одного главного окна, которое имеет NSOutlineView и NSTabView. NSTabViewItems (и их соответствующее под просмотр) добавляются динамически во время выполнения (с использованием Cmd + T). Вышеупомянутое подвью является частью отдельного файла XIB; subview состоит из различных простых элементов управления вводом. Все это работает, как я только что описал.Как я могу динамически модифицировать subview с другого представления?
Я хочу, чтобы 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. Я пропустил здесь шаг, связав эти два?
Спасибо!