2016-04-25 4 views
1

メインの.xibビューがあり、その一部がカスタムビューで構成されています。同時に、別々の.xibサブビュー(それぞれの.hと.mファイルと一緒に)も作成しました。これらのカスタムクラスは、メイン.xibのカスタムビューに接続されましたNSViewControllerをカスタムビューで使用する

この設定はうまくいきますが、さまざまなカスタムビューのそれぞれをNSViewControllerの数で制御したいと思います。これを行うための推奨される方法は何ですか?

例: NSViewカスタムクラスを使用し、それ自身の.xibで設計された 'カスタムビュー'が含まれています

NSViewControllerクラスは、Main.xibに関連付けられたNSViewControllerではなく、これらのカスタムビューのいずれかで発生するイベントに応答します

+0

私はあなたがNSViewControllerをサブクラス化し、中にそれらの新しいビューコントローラの必要な数を置くことによって、これを行うことができると思いますメインのxibファイル(アプリケーションデリゲートのように)。その後、ウィンドウ内の関連するカスタムビューでそれらをグラフィカルにフックし、関連するxibをawakeFromNibにロードさせることができます。メインビューコントローラのアウトレットを介してこれらの子コントローラを保持します。 – pco494

答えて

0

私が以前持っていたカスタムビューではなく、XIBファイルでNSViewControllerを作成しました。

次に、私が持っていたカスタムビューごとにNSBoxコンポーネントを作成しました。私はIBOutlet(s)を介してこれらのそれぞれをメインのNSViewControllerに接続しました。

次のように

最後に、私はIBOutlets経由で専用のNSBoxesに各カスタムビューを添付:

- (void) awakeFromNib{ 
    [super awakeFromNib]; 


    //instantiate custom view controller 
    CustomViewController* customViewController = [[CustomViewController alloc] initWithNibName:@"CustomViewController" 
                bundle:nil]; 
    [self.customNSBoxView setContentView:[customViewController view]]; 
} 
0

私が気付いたことは、新しいNSViewControllerサブクラスを作成し、 'Create XIB'オプションを選択することです。

そこから、View Controllerのサブクラスをインスタンス化し、それをコードのビュー階層に追加します。

これはあなたが示唆していることを完全には行いませんが、モジュール化/テストしやすくしています。欠点は、親と子の間に制約を設定することが難しいことです。私は手動でこれを行う傾向がありました、またはあなたにいくつかの制約を与えるNSStackViewにサブコントローラのビューを追加してください。

もっと良い方法がありますが、これはマルチ-xibプロジェクトで使用した方法です。

+0

これは、このプロジェクトの前に行ったこととまったく同じですが、前述したように、Interface Builderのビュー間で制約を設定するのが難しくなります。 – Keith

関連する問題