2

Mac用のMVCを使用しようとしているテストアプリケーションを作成しています。

それぞれ異なるウィンドウを持つ5つのペン先ファイルと各ペン先のクラスファイルを作成しました。

MainMenu.xibのボタンを押すと、新しいビューが開くようにするにはどうすればよいですか?

iOSでの使用を見てきましinitWithNibName:たが、Macでこれがどのように機能するかがわかりません。それとも私はこれを間違った方法で行っていますか?もしそうなら、Xcodeを使用してMacアプリケーションでさまざまなビューとクラスをどのように管理しますか?

4

2 に答える 2

10

「5つのペン先ファイルを作成しました。それぞれに異なるウィンドウがあり、ペン先ごとにクラスファイルがあります。」5つの異なるウィンドウ(ビューではない)があり、ボタンを押すとそれらを開きたいと想定しています。

各ウィンドウnibファイルはNSWindowController、MVCではCになるaによって制御されます。nibファイルを(プログラムで)実際にロードするには、それにNSWindowController;を割り当てます。OSXのはiPhoneNSWindowControllerのに匹敵します。UIViewController

NSWindowController *controller = [[NSWindowController alloc] initWithWindowNibName:@"nib1"]

次に、NSWindowControllerが管理するウィンドウを開閉できます。

[controller showWindow:nil]ウィンドウを表示するには

[controller.window makeKeyAndOrderFront:self]ウィンドウをキーウィンドウにします。

ただし、同じウィンドウを維持しながら、そのウィンドウのコンテンツビューを切り替えるという、別のことを行うつもりである可能性があります。その場合、ウィンドウではなく、ビューを含む(そして、NSViewControllersを使用してそれらをロードする)nibファイルが必要になります(ウィンドウがあると冗長になるため)。

ただし、Windowsを使い続ける場合でも、contentViewを置き換えるには次のようにします。

[currentWindow setContentView:[newWindowController.window contentView]];

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

AppleがWindows、ビュー、およびアプリケーションで提供しなければならないすべてのドキュメントを読む必要があります。

于 2012-04-15T19:22:19.567 に答える
1

ある意味でのウィンドウは「フレーム」です。つまり、3つの色付きのボタンとタイトルだけがあります。各ウィンドウには、ウィンドウのメインビューであるコンテンツビューがあり、ボタン、テキスト、画像などのコンテンツを表示する役割を果たします。コンテンツ自体は通常、ビューとして実装されます。つまり、NSButtonとNSTextFieldはすべてNSViewのサブクラスです。

OSX Viewドキュメントのこの部分が役立つ場合があります:http: //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaViewsGuide/WorkingWithAViewHierarchy/WorkingWithAViewHierarchy.html#//apple_ref/doc/uid/TP40002978- CH4-SW13

特に、図3-1と3-2を見てください。

これが理解に少し役立つことを願っています。次に、やりたいことを行うには、Verviousanswerで詳しく説明されている手順に従います。

于 2012-04-15T21:04:32.630 に答える