从另一个控制器和笔尖加载一个视图

问题描述:

我有一个情况,一个面板加载了一个视图,但是当一个按钮被点击时,我需要切换到一个不同的笔尖文件,并有不同的视图控制器。从另一个控制器和笔尖加载一个视图

所以说我有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

+0

真的很感谢你列入教程为好。万分感谢。 –