0

私のcocoa OS Xアプリケーションでは、xibファイルを含むWindowControllerと、xibファイルを含む2つ のViewControllerがあります.WindowControllerにカスタムビューを追加しました。ここで、クリックしたときにそれらのビューを削除して追加することにより、これら2つのサブビューを交換しています続行または次へボタン。

[[theViewController view] removeFromSuperview];
self.theViewController = [[WelcomeInstallViewController alloc] initWithNibName:newView bundle:nil];
[innerInstallerView addSubview:[theViewController view]];
[[theViewController view] setFrame:[innerInstallerView bounds]];

これらのビューの 1 つに、WindowController の [続行] ボタンを無効にする必要があるボタンがあります。NSNotificationCenter を使用する必要がありますか? 私は混乱していて、正しく理解していませんでした。

ここに画像の説明を入力

4

2 に答える 2

1

猫の皮をむく方法はたくさんあります。

最も簡単な方法は、アウトレットを追加しNSWindowController、Interface Builder でそのアウトレットにボタンをリンクしてから、必要な条件でボタンの有効化を処理することです。

通知は、アプリケーション コンポーネントを疎結合する良い方法の 1 つです。たとえば、ウィンドウ コントローラーが、ボタン自体を無効化/有効化するトリガーとなる状態変更を開始しない場合などです。

他の可能性には、Cocoa の専用メカニズム (プロトコル) であるNSUserInterfaceValidationsが含まれます。

メニュー項目やツールバー項目などのユーザー インターフェイス要素のターゲットが、ユーザー インターフェイス要素を有効にするかどうかを決定できるようにします。

于 2013-04-16T08:41:48.730 に答える
0

同様の設計要件 (複数のロード可能な XIB) を考慮して、NSViewControllerパラダイムを使用して、メイン ビューにロードするサブビューにロジックをアタッチできるようにしました。この場合、NSViewControllerbool プロパティを持つサブクラスを作成し (これを と呼びましょうcanContinue)、メイン ビューのボタンから所有者の にバインドしますsubview.canContinue

これを行う場合、メイン ビューは、個々のサブビューをそれぞれ取り込むときにビュー コントローラー (XIB のロードを処理します) をロードする必要がありsubviewます。NSViewControllerあなたがロードすること。

于 2013-04-16T09:12:58.277 に答える