Hillegass の著書 Cocoa Programming for MAC OS X のビュー スワッピング コードから始めました。代わりに、ViewController のテーブルの行を使用して、テーブルを生成した ViewController から MyDocument.m の displayViewController を呼び出して、ViewController を交換しようとしています。
- (void)displayViewController:(ManagingViewController *)vc
curBox: (NSBox *)windowBox
{
// End editing
NSWindow *w = [windowBox window];
BOOL ended = [w makeFirstResponder:w];
if (!ended) {
NSBeep();
return;
}
...
私が抱えている問題は、MyDocument.m の NSBox 内でビューを交換できるように、MyDocument.nib でインスタンス化された Interface Builder NSBox に沿って送信する必要がある別の ViewController から displayViewController を呼び出すときです。これを行うには、Interface Builder でインスタンス化された MyDocument.nib の NSBox に、別の ViewController からアクセスできるようにする必要があります。
別のViewControllerからMyDocument.nibのInterface Builderインスタンス化されたNSBoxにアクセスする方法を知っている人はいますか?
編集:
私はいくつかの進歩を遂げました。ビューの階層は次のとおりです。
Window
ContentView
NSBox
次のようにして、最上位の Window と現在の ContentView を取得できました。
NSWindow *w = self.view.window;
NSView *v = [w contentView];
しかし、ContentView 内にある NSBox を取得する方法がまだわかりません。私は次のことを試しましたが、うまくいきませんでした:
NSBox *b = [v container];
NSBox *b = [v content ];
誰にもアイデアがありますか?