問題タブ [nswindowcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4872 参照

objective-c - NSWindowController:loadWindowはnibからウィンドウをロードしますが、showWindow:は何もしません

次の実装で呼び出されるNSWindowControllerサブクラスが_PreferencesWindowControllerあります-

_PreferencesWindowControllerそして、私は次のコードを使用してウィンドウを表示しようとしました-

それは何もしません、そして私がチェックしたの_preferencesWindowController.windownilデバッガーからのものです。

ただし、ウィンドウを呼び出すloadView_preferencesWindowController、ロードして表示できます。_preferencesWindowController.windowもはやゼロ値ではありません-

NSWindowControllerに関するAppleのドキュメントを調べたところ、loadWindow「直接呼び出すことは絶対にしないでください」と具体的に記載されており、代わりshowWindow:に使用する必要があります。私が見ている上記の振る舞いをもたらしたのは、私が何を見逃したのだろうかと思います。

0 投票する
2 に答える
9238 参照

cocoa - NSWindowController の理解の明確化

私はプロジェクトで NSWindowController を数回使用しており、この重要なクラスの背後にある概念を (非常に) 大まかに把握しているように感じます。この投稿で私がやりたいことは、私自身の理解を明確化/修正し、うまくいけば他の学習者が理解への第一歩を踏み出すのを助けることです. これは、概念、概要、およびベスト プラクティスの概要であり、最も有用であり、ドキュメントに欠けていることがよくあります。これが NSWindowController に対する私の見解です (質問は太字で散りばめられています):

  • NSWindowController (NSWC) サブクラスは、(概念的には) すべてのウィンドウ nib のすぐ下に存在し、ユーザー インターフェイス要素とそれらが制御/表すモデル オブジェクトとの間の接着剤として機能します。基本的に、アプリケーション内のすべてのウィンドウには、独自の NSWC サブクラスが必要です。
  • nib のファイルの所有者は、常に NSWC サブクラスである必要があります。これは、MainMenu.xib アプリケーションにも当てはまりますか?
  • NSWCwindowプロパティは、常に InterfaceBuilder の NSWindow にリンクする必要があります。
  • を使用して「init」メソッドをオーバーライドする必要があります[super initWithWindowNibName:]。これにより、参照時に[mycontroller window]nib がロードされます。これは起動時に開かれますが、MainMenu.xib ウィンドウの NSWC にも当てはまりますか?
  • NSWC は重労働を行うべきではありません。単純にメッセージをオブジェクトのインスタンスに渡し、それらのオブジェクトを UI に表示する必要があります。
  • バインディングを使用したり、テーブルなどのデリゲートとして機能したり、変更を観察したときに UI 要素を積極的に変更したり、上記のいずれかの組み合わせを使用して UI を変更したりできます (どちらを使用するかは問題と思われます)。味、すべての側面に長所と短所があります)。
  • NSWC は、必要に応じて他の NSWC のインスタンスを作成できます (たとえば、1 回限りのサブウィンドウを開く場合)。
  • [mycontroller showWindow:nil]関連するウィンドウを前面に表示するには、 を使用します。ウィンドウをシートとして表示する場合は、次のようなものを使用します。

    /li>

は親ウィンドウの NSWCのdidEndSelector:メソッドである必要があり、 で「mycontroller」にアクセスして解放できます[sheet windowController]。- ウィンドウを閉じるにはperformClose:、NSWC のウィンドウのメソッドを呼び出します。

いくつかの質問:

  • MainMenu ウィンドウの NSWC もアプリケーション デリゲートにする必要がありますか、それとも別のクラスにする必要がありますか?
  • 同じように、メインの NSWC がファイルを処理 (ドラッグ/ドロップして開く) する必要がありますか、それともアプリのデリゲートに渡す必要がありますか?それとも好みの問題ですか?

これのいずれかが悪い習慣であるか、単に間違っている場合は修正してください。NSWindowController についての理解を深めたいと考えているため、(ベスト プラクティス、経験、落とし穴の形で) 追加情報をいただければ幸いです。

ありがとう、ローリー

0 投票する
1 に答える
1178 参照

cocoa - ココアは背景ウィンドウを前面に送信します

この投稿の下部に、コードを含むサンプルプロジェクトを含めました。メインのデフォルトウィンドウを使用するCocoaアプリケーションと、作成した別のウィンドウペン先があります。プログラムが起動したら、ウィンドウニブをロードして、デフォルトの「MainMenu」ニブウィンドウの前に表示したいと思います。これどうやってするの?次のコードを試しましたが、ウィンドウはデフォルトウィンドウの後ろに表示されたままです。

AppControllerこれは、MainMenuペン先に追加したクラスであるから呼び出されています。InfoWindowControllerサブクラスNSWindowControllerここにサンプルプロジェクトを含めました。

0 投票する
1 に答える
243 参照

objective-c - NSWindowController は常にウィンドウ コントローラのスーパークラスであるべきですか?

Apple の Cocoa チュートリアルを読むと、ウィンドウ コントローラーは通常のクラスにすぎません。

私がこれを正しく理解すれば、NSWindowController は、ウィンドウ コントローラーが実装するために必要な多くの機能を既に備えている便利なクラスですよね?

このクラスを使用しない理由はありますか?

0 投票する
2 に答える
2489 参照

objective-c - NSWindow の位置を設定できません

NSWindowController を拡張するクラスがあり、それが制御するウィンドウを配置しようとしています。ウィンドウには、予想されるすべてのコンテンツと機能が正しく表示されますが、initWithWindowNibName メソッドで画面上の開始位置を配置しようとすると、位置が変わりません。コードは次のとおりです。

これは非常に単純なようで、何が問題なのかわかりません。

アイデアをありがとう。

(問題が見つかりました。IB のクラスに接続されたウィンドウがありませんでした。)

0 投票する
1 に答える
565 参照

objective-c - IB で作成された NSWindow がアプリケーションでモーダルに表示されない

ボタンを押すとモーダルウィンドウが表示されるアプリケーションがあります。それについていくつか質問がありますが、頭痛の種に絞り込みます。

私は、この特定のケースに適用するとうまくいかないようなことをすでに行っていることを付け加えたいと思います。私がすでに行っていることは、NSOpenPanel をモーダルに表示することです。これがそのコードです。

このコードは appDelegate 内にあります。

今私がやろうとしていることとそれがうまくいかないこと

NSPanel のように機能する HUD ウィンドウ (IB での名前の付け方) を持つ xib ファイルを作成しました。ボタン (testButton) をリッスンする windowcotroller を作成しました。コードは次のとおりです。

xib ファイルのファイル所有者を BrowserWindowController クラスに設定し、ボタンを testbutton にリンクしました。

ボタンがクリックされたときに appDelegate に戻る このパネルをモーダルに表示したい。コードは次のとおりです。

このウィンドウをモーダルに表示するための NSOpenPanel のような関数が API にありません。

答えるかもしれない人へのThx。

0 投票する
1 に答える
4410 参照

cocoa - xibからどのようにシートを表示しますか?(MacOSx)

NSPanelのみを含むxibファイルがあります。このパネルをモーダルシート(with beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:)として表示しようとしています。このxibのファイルの所有者は、NSPanelへのIBOutletを持つコントローラークラス「MyController」です。

私が探しているのは次のようなものです。

質問:MyControllerはまたはから継承する必要がありますNSWindowControllerNSObject?試しNSWindowControllerてみましたが、いつもinitWithWindowNibName:への出口はありません。NSPanel

ありがとう

0 投票する
1 に答える
15399 参照

cocoa - NSWindowが閉じたときに通知を受け取る方法

NSWindowがいつ閉じられるべきか、または閉じられるかをどのように通知できますか?windowWillCloseのようなものが欲しいのですが。残念ながら、NSWindowControllerには、たとえばUIViewControllerほど便利なメソッドがありません。では、それを行うためのベストプラクティスは何ですか?

ありがとう
–f

0 投票する
0 に答える
825 参照

objective-c - ステータスメニューから新しいウィンドウを表示

重複の可能性:
アプリケーションからの新しい NSWindow - ミッションは不可能ですか?

ステータスメニューアプリケーションから新しいウィンドウを表示するにはどうすればよいですか?ステータスメニューアプリケーションとメソッドが呼び出されました

ステータスメニュー項目をクリックした後、新しいウィンドウを開きたいです。「Preferences.xib」という名前の新しいxibファイルとして、コントローラーを介してオブジェクトウィンドウにウィンドウを接続して、新しいウィンドウを作成しました。起動時に新しいウィンドウが表示されないようにするため、オプションのチェックを外しました: 起動時に表示、bcz ステータス メニューの項目をクリックした後に表示したい。ウィンドウコントローラーを作成しました:

次にinitを実装しました:

次に、mainAppDeleage の init にウィンドウを作成しました。

そして

何か提案はありますか?4日間のグーグル検索と失敗した試みの後、私は絶望的です:-(ありがとう。私はobjective-cの初心者です。

0 投票する
3 に答える
1971 参照

objective-c - アプリケーションからの新しいNSWindow-ミッションインポッシブル?

OK、私は何が間違っているのですか?
1.次の名前のココアアプリとappDelegateを作成しました:window2AppDelegate
2. window2AppDelegate.h


3. xibエディターで、ウィンドウコントローラーに接続されたウィンドウ-appdelegateに設定し、ボタンクリックアクションをボタン
4に設定します。


5.コントローラーからウィンドウに接続されたPrefWindowwindowIBOutletという名前の新しいxibファイルを作成しました(コントローラーもPrefWindowControllerに設定されています)オプション「起動時に表示」チェックなし!buttonclickでこのウィンドウを見たいです。
6.実装されたwindow2AppDelegate


7.アプリをビルドして実行した後:closebuttonはアプリを閉じますが、buttonclick-PrefWindowが表示されません!?なぜそして何が間違っているのですか?ココアのObjective-Cで他のウィンドウを表示することは、「愚かな」JavaやC#よりも難しいことを私に言わせないでください。