从另一个控制器和笔尖加载一个视图
问题描述:
我有一个情况,一个面板加载了一个视图,但是当一个按钮被点击时,我需要切换到一个不同的笔尖文件,并有不同的视图控制器。从另一个控制器和笔尖加载一个视图
所以说我有Foo.nib和Bar.nib。 Foo.nib是一个面板和视图,Bar.nib只是一个视图。在FooController的我有这样一句台词:
[NSBundle loadNibNamed:@"Foo" owner:self];
但我想我还需要:
[NSBundle loadNibNamed:@"Bar" owner:BarController];
,并单击按钮时我切换在FooController的看法,但所有的BarController GUI元素都不由BarController处理。这是正确的想法吗?如果是这样,即使BarController位于Foo nib中,我也无法加载Bar笔尖。
答
您可能想制作3个笔尖文件:一个用于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:与:
有一个更完整的例子here
真的很感谢你列入教程为好。万分感谢。 –