我开始使用Hillegass的书“Cocoa Programming for MAC OS X”中的View Swapping代码。此代码使用MyDocument.nib中的弹出菜单,使用MyDocument.m中的displayViewController交换ViewControllers,如下所示。我正在尝试使用ViewController中的表行来通过调用生成表的ViewController中的MyDocument.m中的displayViewController来交换ViewControllers:
- (void)displayViewController:(ManagingViewController *)vc
curBox: (NSBox *)windowBox
{
// End editing
NSWindow *w = [windowBox window];
BOOL ended = [w makeFirstResponder:w];
if (!ended) {
NSBeep();
return;
}
...
我遇到的问题是当我从另一个ViewController调用displayViewController时,我需要沿着MyDocument.nib中的Interface Builder实例化NSBox,以便可以在MyDocument.m中的NSBox内部交换视图。这样做我需要能够从另一个ViewController访问MyDocument.nib中的Interface Builder实例化NSBox。
有谁知道如何从另一个ViewController访问MyDocument.nib中的Interface Builder实例化NSBox?
编辑:
我取得了一些进展。视图层次结构为:
Window
ContentView
NSBox
我已经能够通过以下方式获得顶级窗口和当前的ContentView:
NSWindow *w = self.view.window;
NSView *v = [w contentView];
但我仍然没有弄清楚如何获取ContentView中的NSBox。我尝试了以下但是他们没有工作:
NSBox *b = [v container];
NSBox *b = [v content ];
有人有想法吗?
答案 0 :(得分:0)
我找到了解决方案。 NSBox是ContentView的子视图。以下是有效的:
NSWindow *w = self.view.window;
NSArray *va = [[w contentView] subviews];
NSBox *b = [va objectAtIndex:0];