問題タブ [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.
objective-c - NSPanelがフォーカスを取得したとき、またはキーになったときを知る方法は?
XCode4でCocoa/Objective-Cアプリを作成していますが、設定パネルがいつ開かれるかを知る必要があります。windowDidBecomeKeyのようなコールバックが必要です。私はこの質問で提供された解決策に従おうとしましたが、どちらもwindowDidBecomeKey
デリゲートwindowDidExpose
メソッドとして表示されません(ただし、、などの他のメソッドwindowDidLoad
はwindowWillLoad
そうします)。
「デリゲートメソッドとして表示されない」とはどういう意味かを明確にするために、メソッド名を入力し始めたときにオートコンプリートに表示されないことを意味します。とにかくそれらを定義しようとしましたが、呼び出されることはありませんでした。
オブジェクトにはこれらのメソッドがありませNSPanel
んか、それとも私がしなければならないことがもっとありますか?
現在、私はインターフェースを持っていますPrefWindowController
:
PrefWindowController.h:
PrefWindowController.m:
アプリケーションの起動時にウィンドウが.xibから読み込まれると、起動し、windowDidLoad
上記で定義された通知が表示されます。これは、メソッドが実際に呼び出されていることをテストするためだけに行いました。
パネルが重要になったとき、または焦点が合ったときにコールバックを取得する方法についてのアドバイスは非常に役立ちます。
アップデート:
windowDidBecomeKey
次のようなメソッドをウィンドウコントローラーに追加しました。
PrefWindowController.h:
PrefWindowController.m:
ウィンドウを初めて開いたときにテストメッセージがログに記録されますが、main.m
ファイルの戻り行に次のエラーが表示されます。
スレッド1:プログラム受信信号: "EXC_BAD_ACCESS"
objective-c - ユーザーの既定値を初期化するための最適なウィンドウ コントローラーの方法
ユーザーのデフォルトを読み取って で設定するときに、ウィンドウでチェックボックスを初期化するときにわずかな遅延が発生しますwindowDidLoad
。これを行うためのより良い場所はありますか?
これは、私の好みのウィンドウ コントローラー クラスのコードです。
cocoa - NSWindow setFrameがLionで機能していませんか?
私はCocoaとLionでこの問題について自殺してきましたが、誰かがこの問題に遭遇し、(うまくいけば)解決策を見つけたかどうか疑問に思っていました。
NSWindowControllerがNSWindowのsetFrameOrigin:メソッドを使用してウィンドウの位置を割り当てる非常に単純なプロジェクト(コードはここからダウンロードできます:http://cl.ly/2T0N2C1A3K1r2h1q0R1e )があります。
これは最初の実行ではA-OKで機能しますが、ユーザーがウィンドウを移動すると、アプリを終了して再起動すると、setFrameOrigin:コマンドを使用する代わりに、ウィンドウが以前の場所に復元されます。
NSWindowControllerはすでにカスケードと自動保存が無効になっているため、発生しないはずです。
また、Snow Leopardでテストしたところ、コードは100%機能します。これはLionのみの問題です。
何か案は?
objective-c - シートから親ウィンドウにデータを渡す最良の方法は何ですか?
のサブクラスであるアカウントを追加するために使用される を使用NSWindowController
してロードNSWindow
されました。親ウィンドウコントローラーには、すべてのアカウントの配列があり、シートで作成されたオブジェクトを this に追加する方法が必要です。オブジェクトを渡す最良の方法は何ですか?beginSheet:withModalWindow ...
NSObject
NSMutableArray
nswindow - MainWindowから渡された値をNSWindowに表示できませんか?
私の問題は次のとおりです。MainWindow.xib、Window1.xib、Window1Controller.h、Window1Controller.mがあります。MainWindowからWindow1を表示できますが、渡された値がWindow1に表示されません。値を表示する準備ができていることを確認し、作成します。 Window1のボタンと私はこの値を呼び出すことができます。Window1をロードした後に通過値を表示するにはどうすればよいですか。
これが私のコードです:
AppDelegate.m
Window1Controller.m
cocoa - ココアでメイン ウィンドウの複数のスタイルを管理する
cocoa で複数のスタイルのメイン ウィンドウを切り替える最良の方法は何ですか? ミニプレーヤー ビューと通常サイズのビューを備えた iTunes のようなものを意味します。さまざまなnibファイルをレイアウトし、ユーザーが小さいものと大きいものをより詳細に選択できるようにしたいと考えています。
NSWindowController が必要ですか、それとも次のように App Delegate に nib をロードしても問題ありませんか?
[NSBundle loadNibNamed:@"BigWindow" owner:self];
macos - ウィンドウコントローラアウトレットをウィンドウに接続
XCode 4 で単純なモーダル ダイアログを作成しようとしています。xib を作成し、NSWindowController 派生クラスを作成して、xib のファイルの所有者のクラスにしました。私が問題を抱えているのは、質問への回答に記載されているように、窓のコンセントを物理的に接続することです。
NIB からロードされた NSWindow にフォーカスを与える方法は?
10.5 で NSWindowController の showWindow を 2 回呼び出さなければならないのはなぜですか?
そしてAppleのドキュメントはこちら:
概念は理解できますが、XCode 4 で実際に行う方法がわかりません。CTRL-ドラッグを介して、xib のコントロールをクラスのアウトレットまたはアクションに接続する方法を知っています。この場合、何をドラッグして何をドラッグすればよいかわかりません。
どんな助けでも感謝します。
objective-c - 画面に表示される前に NSWindowController のウィンドウを構成する
実際のウィンドウが表示される前に、ウィンドウにNSWindowController
いくつかの属性 (特にプロパティ) を設定したくありません。styleMask
ただし、 のwindow
プロパティはNSWindowController
、ウィンドウが既に画面に表示されている場合にのみ使用できます。
で使用できinitWithWindow:
ましたNSWindowController
が、ウィンドウのコンテンツに nib ファイルを使用できなくなりました (これはinitWithWindowNibName:
.
では、表示される前にビューを構成するにはどうすればよいですか? viewWillAppear
on に似ていNSView
ますか?
objective-c - Cocoa で単純なアプリケーション モーダル ダイアログを表示および管理する方法
私は物事を正しい方法で行っているのか、それともすべてハッキングされているのか確信が持てません。
Cocoa アプリケーションでアプリケーション モーダル ダイアログを操作する方法を学習するために作成した、非常に単純なテスト アプリケーション (ドキュメント ベースではない) があります。
アプリケーション プロジェクト「TestModalDialog」では、デフォルト ビューと「ダイアログの表示」ボタンを備えた単純な MainMenu.xib を追加しました。「キャンセル」ボタンと「OK」ボタンを持つ TheDialog.xib という 2 番目の XIB を作成しました。その xib は、「TheDialogController」と呼ばれる NSWindowController から派生したクラスを所有者として持っています。ウィンドウのアウトレットとデリゲートはコントローラーに接続されています。
メイン ビューで [ダイアログを表示] を選択すると、ダイアログが起動します。「キャンセル」または「OK」を選択すると、ダイアログが閉じます。これは非常に単純なコードです:
モダリティに問題がありました - userClickedCloseOrOk とテストを入れる前に、ユーザーが閉じるボタン (左上の赤い点) を押すと、ダイアログは閉じますが、モーダル セッションはまだ実行されていました。
最初はダイアログの閉じるボタンをそのままにしておくことができると思いますが、それで、そのシナリオをキャッチする良い方法を示したのですか、それとももっと良い方法がありますか? それとも、そもそも何か間違ったことをしているのですか?それが私にその問題を引き起こしていますか?
アドバイスをいただければ幸いです。
注- 元の例のコードはコメントアウトされ、回答に基づいたコードに置き換えられました。新しい通知ハンドラーも追加されました。
macos - ウィンドウコントローラーの使用を明確にする
私はいつ WindowController を使うべきか、いつ Document オブジェクトに何かを入れるべきかについて学んできました。シンプルなインターフェイスを使用している場合、ドキュメントはコントローラーとして正常に機能するようです。私は自分のアプリケーションに単純なインターフェースを持っていますが、とにかく IB アウトレットを WC に入れるのは良い習慣ですか? トイレを使用したくない場合のシナリオは何ですか?