我的情况是Panel加载了一个视图,但是当单击一个按钮时,我需要切换到另一个nib文件中的视图,并且该视图具有不同的控制器。
所以说我有Foo.nib和Bar.nib。 Foo.nib是一个面板和视图,Bar.nib只是一个视图。在FooController中,我有一行:
[NSBundle loadNibNamed:@"Foo" owner:self];
但我想我也需要:
[NSBundle loadNibNamed:@"Bar" owner:BarController];
当单击按钮时,我在FooController中切换View,但BarController不处理所有BarController GUI元素。这是正确的想法吗?如果是这样,即使BarController在Foo笔尖中,我也无法加载Bar nib。
答案 0 :(得分:1)
您可能想制作3个nib文件:一个用于Panel,Foo和Bar。然后你可以创建NSViewController的FooController和BarController子类,并像这样创建它们
FooController *fooController = [[FooController alloc] initWithNibName:@"Foo" bundle:nil];
BarController *barController = [[BarController alloc] initWithNibName:@"Bar" bundle:nil];
每当您需要将视图放置在面板中时,您只需执行
NSView *fooView = [fooController view];
[panelView addSubview:fooView];
或者您可以使用replaceSubview交换视图:with:
有一个更完整的示例here