2

複数のウィンドウに頼らずに、アプリケーションに 1 つのドキュメントと複数の画面を持たせたいと考えています。これを達成するための最良の方法は何ですか?コントロールのセットを表示する NSViewController で始まり、そのビューを別の NSViewController に交換する単一の NSPersistentDocument を使用することを考えています。

私の質問は: これは NSViewControllers の正しい使い方ですか? それはできますか?両方の答えが「はい」の場合、ドキュメント内のビューを別のビューと交換するにはどうすればよいでしょうか?

4

3 に答える 3

7

はい、完全に可能です。はい、View Controller を使用する必要がありますが、そうする必要はありません。それは厳密にスタイル上の選択です。ビュー コントローラーを使用しない場合、すべてのコントローラー ロジックは単一のウィンドウ コントローラーにある可能性があります。大きなアプリの場合、それは苦痛になるかもしれません。ビュー コントローラーは、UI を論理コンポーネントと制御ユニットに分解するのに役立ちます。

次のようにView Controllerメソッドを実行します。

  • コンポーネント ビューごとに個別の xib を作成します。
  • xibごとに、それをロード、所有、および制御するView Controllerサブクラスを作成します。
  • これをさらに進めて、ビュー内の個別の領域にサブ ビュー コントローラーを用意することができます。
  • ウィンドウ コントローラーの awakeFromNib クラスで、トップレベルのビュー コントローラーをすべてインスタンス化します。

これで、複数のトップレベル ビュー コントローラーを持つアプリの基本的なフレームワークができました。ここからのタスクは、必要に応じて、またはユーザー入力の指示に従って、メイン ウィンドウ内のビューを配置することです。トップレベルのビューが 3 ~ 4 個ある場合もあれば、1 個の場合もあります。これらのシナリオに大きな違いはありません。

これを達成するには多くの方法があります。

あなたの特定のケースでは、それを行う簡単な方法は次のとおりです。

  • 最上位のテーブルとボーダーレス タブ ビューを使用し、選択したタブをプログラムで設定します。

一般的に、あなたはたくさんのことをすることができます:

  • メイン ウィンドウのコンテンツ ビューでサブ ビューを手動で配置します。
  • 必要に応じて、サブビューを内外または表示可能領域内に移動 (アニメーション化) します。
  • メイン ウィンドウで分割ビューを使用して、表示したい領域または表示したくない領域を折りたたんだり折りたたんだり解除したりします。

ところで、この方法は、ドキュメントベースのアプリを作成しているかどうか、またはそれが単一ウィンドウまたはマルチウィンドウのドキュメントベースのアプリであるかどうかに関係なく機能します。

ビュー コントローラーを使用することの 1 つの欠点は、トップレベルのビュー レイアウトが多く、管理を IB ではなくプログラムで行う必要があることです。しかし、それほど難しいことではありません。

通常は、addSubview: と setFrame: を実行するだけで、既に IB にレイアウトされている親ビューにビューを配置できます。

しかし、より複雑で手動の操作を行うには、ドキュメントを読み、フレーム/境界、反転座標、自動サイズ変更、自動サイズ変更をオーバーライドして独自のレイアウトを行う方法を理解する必要があります。

于 2011-03-05T02:12:32.937 に答える
0

説明どおりに実行できますが、ドキュメントとの関係を手動で管理する必要があります。これは、デフォルトの構成では、簡単にするために 1 つのドキュメント --> 1 つのコントローラーの関係が想定されているためです。

標準設計から離れると、すべての組み込み機能が失われます。

デザインを再考する必要があるかもしれません。ドキュメントを特定のView Controllerにリンクする目的は、ユーザーにドキュメントのメタファを提供することです。ユーザーに関する限り、ビューはドキュメントです。同じドキュメントの複数のビューを提供する場合、ユーザーは、複数のドキュメントがあると解釈する可能性が最も高くなります。これは、UI 文法がユーザーに期待するようにトレーニングしたためです。

UI で標準的でないことをしていることに気付いたら、立ち止まって慎重に考えてください。あなたが開発者として何が起こっているかを理解しているからといって、ユーザーがそうするわけではありません。

于 2011-03-03T04:41:54.780 に答える
-2

NSNavigationController を使用して複数のビューを管理するのはどうですか?さまざまなビューのプッシュとポップが簡単になりますか?

于 2011-03-07T20:23:39.820 に答える