我從Hillegass的書Cocoa Programming for MAC OS X的視圖交換代碼開始。此代碼使用MyDocument.nib中的彈出式菜單在MyDocument.m中使用displayViewController交換ViewControllers,部分顯示如下。我想,而不是使用一個表的行中的ViewController通過從視圖控制器MyDocument.m調用displayViewController生成表交換ViewControllers:訪問IB在另一個類的MyDocument中實例化NSBox?
- (void)displayViewController:(ManagingViewController *)vc
curBox: (NSBox *)windowBox
{
// End editing
NSWindow *w = [windowBox window];
BOOL ended = [w makeFirstResponder:w];
if (!ended) {
NSBeep();
return;
}
...
我遇到的問題是,當我打電話displayViewController從我需要沿Interface Builder發送的另一個ViewController在MyDocument.nib中實例化NSBox,以便可以在MyDocument.m中的NSBox內交換視圖。所以對此我需要能夠從另一個ViewController訪問Interface Builder在MyDocument.nib中實例化NSBox。
有誰知道如何從另一個ViewController訪問Interface Builder在MyDocument.nib中實例化NSBox?
編輯:
我已經取得了一些進展。視圖層次是:
Window
ContentView
NSBox
我已經能夠到達頂級窗口和當前內容查看下列要求:
NSWindow *w = self.view.window;
NSView *v = [w contentView];
,但我還沒有想出如何獲得在ContentView內的NSBox。我試過以下,但他們沒有工作:
NSBox *b = [v container];
NSBox *b = [v content ];
任何人有一個想法?