2011-02-09 9 views
0

私は、このコードは、部分的に以下のようMyDocument.mでdisplayViewControllerを使用してViewControllersを交換するMyDocument.nibのポップアップメニューを使用していますMAC OS X用Hillegassの本のCocoaプログラミングからの眺めのスワッピングコードから始まりました。私はからdisplayViewControllerを呼び出すとき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; 
} 
... 

私が午前問題がある:私は、テーブルを生成しているのViewControllerからMyDocument.mでdisplayViewControllerを呼び出すことによってViewControllersを交換するためのViewControllerでテーブルの行を使用する代わりにしようとしていますビューがMyDocument.mにNSBoxの内側に交換することができるように、私はInterface Builderを一緒に送信する必要があり、別のViewControllerはMyDocument.nibで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

私は解決策を見つけました。 NSBoxはContentViewのサブビューです。したがって、次の作品:

NSWindow *w = self.view.window; 
NSArray *va = [[w contentView] subviews]; 
NSBox *b = [va objectAtIndex:0]; 
関連する問題