30

私はiOSのバックグラウンドから来て、Cocoaを学び始めています。iOSでは、複数のターゲットがiPadあり、iPhone通常は1つのウィンドウがあり、を使用して画面を管理している場合を除きますUIViewControllers。すべての新しい画面がほとんどの場合にマップされる場所UIViewController

ただし、ココアでは、これは新しい画面/ウィンドウがによって管理されNSWindow、そのサブコンポーネントがによって管理されるという逆のようNSViewControllerです。したがって、複数のウィンドウアプリがある場合はNSWindowController、ウィンドウごとに個別にする必要があります。

このアプローチは正しいですか、それとも私は誤解していますか?

4

3 に答える 3

14

iPhoneSDKとLeopardSDKで、彼らはビューコントローラー、またはNSViewControllerとUIViewControllerを導入しました。彼らの名前が示すように、彼らがしていることはビューを管理することです

ビューコントローラは、ビューを管理するためのものです。UIデザインの現在の傾向は、シングルウィンドウ、マルチビューです。つまり、1つのウィンドウがあり、その内部には、さまざまな目的のために設計されたさまざまなビューのグループを入れ替えることができます。したがって、View Controllerは、確立されたパターンのプログラマーのためにこれらを処理します。プラットフォームはシングルウィンドウおよびマルチビューモデルに基づいているため、現在、ビューコントローラはiPhoneおよびiPodtouchプログラミングにとって非常に重要です。ただし、Macではビューコントローラの使用が非常に人気があるようには思えません。NSWindowControllerのようなウィンドウコントローラーはどうですか?対応するUIWindowControllerは、iPhoneおよびiPod touch環境には存在しません。これらの環境には、ウィンドウが1つしかないためです。ビューコントローラとは異なり、NSWindowControllerはドキュメントベースのプログラム用です。さて、ドキュメントベースのプログラムは複数のウィンドウを使用できます。したがって、Appleのドキュメントにあるように、NSWindowControllerはドキュメントベースのプログラム用であると考えるのが妥当です。

于 2012-06-16T05:49:44.603 に答える
5

私もiOSから来て、しばらく前にMacアプリのコーディングを始めました。主に、Appleのドキュメントから学びました。

私の印象では、デスクトップではsはほとんど必要ありませんNSViewController(1つの大きな例外は、GarageBandのウェルカム画面のように、タブと複数のビューを備えたウィンドウです)。

ほとんどの場合、NSWindowControllerウィンドウごとに1つあります。NSWindowまず、とNSWindowController(およびNSDocument、ドキュメントベースのアプリを作成している場合)の関係を学びます。

正しく理解できたら、で実験を開始しNSViewControllerます。


更新: Macアプリにもストーリーボードが導入されたため、Appleは、iOSアプリの構造に合わせて、ほとんどのビュープレゼンテーションロジックを古いNSWindowControllerものから新しいものに移行する必要があると予想しているようです。線を引く場所や、ウィンドウコントローラーに残しておくべきコードの種類(またはサブクラス化する必要があるかどうか)については、NSViewControllerあまり詳しくありません。

于 2012-06-16T07:05:27.107 に答える
1

ウィンドウコントローラは、従来のウィンドウを作成し、すべての従来のAPIを備えています。

ビューコントローラは、別のビューの外に表示することもできます。次に、ウィンドウフレームを取得しますが、従来の完全なWindowControllerAPIをサポートしていません。

カスタム、モーダル、および表示に加えて、ビューコントローラをモードシートおよびポップオーバーに表示することもできます。

そのため、View Controllerにはより多くのプレゼンテーションオプションとより合理化されたAPIがありますが、従来のWindowControllerでカバーされている場合にはおそらくいくつかの制限があります。

于 2020-10-14T10:08:30.887 に答える