3

ユーザーが選択した条件に応じて、さまざまな時点でNSTable、IKImageBrowserViewなどの無関係な「ビュー」を動的に入力したいウィンドウの領域(MainMenu.xib内)があります。

  • ウィンドウのこの領域を定義して、さまざまなビューで「置き換える」ことができるようにするにはどうすればよいですか?
  • ウィンドウのこの領域にテーブルまたはその他のビューをアタッチするにはどうすればよいですか?

(そこに汎用NSViewを配置し、毎回サブビューを追加するだけで十分ですか?私はCocoaにかなり慣れていないので、どのポインターでも歓迎します)

4

3 に答える 3

6

現代のココアでは、これはビューコントローラーの仕事です。Cathy Shiveには、それらに関するいくつかの優れたブログ投稿(1、2、3 )があり、基本的なNSViewControllerよりも便利なViewControllerクラスを共同執筆しています。

于 2009-07-01T09:37:59.140 に答える
1

いくつかの方法があります。「カスタム nsview」を入れて、それを windowDidLoad の実際のビューに置き換えるのは簡単だと思います。次のようになります。

@interface MyController : NSWindowController
{
    IBOutlet NSView* dummyView;
}
@end

@implementation MyController
-(void)windowDidLoad{
    NSView* actualView = ...; //create the real view here
    [actualView setFrame:[dummyView frame]];
    [actualView setAutoresizingMask:[dummyView autoresizingMask]];

    NSView* superview = [dummyView superview];
    [dummyView removeFromSuperview];
    [superview addSubview:actualView];

    dummyView = actualView; //just incase dummyView is ever used again
}
@end
于 2009-07-01T09:00:15.177 に答える
0

個人的には、2 つのセクションに 2 つのビューを追加します。インターフェイスビルダーのリンクを使用して、topView と bottomView がそれらをコードにリンクするとします。そこから、次の方法で各ビューのコンテンツを管理できます。

addSubview (uiview またはオブジェクトを受け取るオブジェクトの関数です)

これを使用して、次のような 2 つのメイン ビューに個々のオブジェクトまたはビューを追加できます。

[topView addSubview:roundedUIButton_instance];

また

[topView addSubview:another_view_instance];

removeFromSuperview (自身を削除するために使用されるオブジェクトの機能です)

[roundedUIButton_instance removeFromSuperview];

また

[another_view_instance removeFromSuperview];
于 2009-07-01T09:22:05.413 に答える