問題タブ [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 に答える
4769 参照

xcode - NSWindowController は新しいウィンドウを表示します

私はMacプログラミングに非常に慣れていません。3日前に始めたばかりです。
メイン ウィンドウ
にボタンが 1 つあるサンプル アプリを作成しています。このコードを使用して新しい wndowcontroller を開きます。

これは正常に機能しますが、ボタンをもう一度押すと同じウィンドウが再び開くため、クリックするたびに画面に+1ウィンドウが表示されます。
私が欲しいのは、新しいウィンドウが既に画面に表示されている場合、ボタンは同じウィンドウを追加できないということです。

前もって感謝します:)

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

macos - OSX Lion の NSWindowController で廃止された NSWindow

次のように定義されたサブクラスがあります。

次に、上記のサブクラスのインスタンスを次のように作成します

windowそんな風にお願いしてみるmusicBrowserWindowController

ただし、そうすると、警告メッセージが表示されますwindow maybe deprecated because receiver type is unknown

私が間違っていることに関する提案はありますか?この警告メッセージは OSX Lion でのみ表示されることに気付きました。ありがとう。

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

macos - plistファイルを含むNSTableView

私はMacアプリ開発に非常に慣れていません。実践的な演習を行うだけです。

plist ファイルのデータを表示するテーブルビューを作成したいと考えています。
1 つの windowcontroller クラスと window controller.xib ファイルがあります。
NSTableView を .xib ファイルにドラッグ アンド ドロップします。
このコードを使用してplistファイルをロードします

テーブルビューに行を表示するにはどうすればよいですか??
どの方法を使用する必要がありますか? そしてどうやって??

私たちが使用しているIOS開発のように

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

cocoa - WindowController に対して awakeFromNib が 2 回呼び出されましたが、正しいですか?

awakeFromNib は 1 回だけ呼び出すように言われたので、WindowController に対して 2 回呼び出されたことに非常に驚きました。IB を使用して MainMenu.xib に WindowController を作成しますが、読み込むウィンドウの xib ファイルを指定するために、init メソッドを追加しました。

コードをデバッグすると、このコール スタックによってトリガーされた awakeFromNib への最初の呼び出しが見つかりました。したがって、基本的に [MyWindowController init] が最初の呼び出しをトリガーしました。それから、私が推測する 2 番目の呼び出しは、MainMenu.xib のロードが原因でした。あれは正しいですか ?

誰かがそれに光を当てることができますか?

ところで、スタックオーバーフローに関する私のものと同様の他の質問をいくつか読みましたが、ファイルオーウェンの問題が原因である可能性があるとの回答がありました。そのため、特にウィンドウ xib ファイルのファイル所有者を NSApplication に変更します。しかし、MyWindowController に対してはまだ awakeFromNib が 2 回呼び出されていました。

ここに画像の説明を入力

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

cocoa - 別のウィンドウに切り替えるときにウィンドウが解放されない

メインウィンドウにいくつかのボタンがある Mac アプリケーションを作成しています。

ボタンをクリックするDetailWindowと、NSTableviewで開きます。すべてのボタンクリックイベントは、 NSTableViewのデータを変更します。

これが私のコードです:

私のmainWindow.mファイル

詳細ウィンドウ

最初のボタンをクリックすると、このif([title isEqualToString:@"First"])イベントが呼び出され、テーブルビューに最初の 5 つの画像が表示されます。

その後、2 番目のボタンをクリックすると、テーブルに次の 5 つの画像が表示されません。if ([title isEqualToString:@"Second"])このイベントは呼び出されていないため、データは変更されていません。
最初にsecondボタンをクリックすると、同じことが起こりfirst eventます。

理由はありますか?2番目のボタンのいずれかをクリックしても、ウィンドウが解放されていないと思います。

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

objective-c - NSWindowController の割り当てが解除されない

NSWindowControllerサブクラスがあり、通知windowWillClose:でウィンドウコントローラーに自動解放を送信します。しかし、まだ dealloc が呼び出されることはありません。クラスにタイマーがないので、それは問題ではありません。何か案は?

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

macos - 子 NSWindows を移動せずに NSWindow を移動する方法

アプリケーションの中心となるメイン ウィンドウがあります。さまざまな機能について、特定の特殊な機能を処理する子ウィンドウを開きます。すべてのウィンドウを個別に移動したいのですが、現在、元の中央のウィンドウを移動すると、それらの子ウィンドウもすべて移動します。親と一緒に移動しないように、子ウィンドウを切断するにはどうすればよいですか?

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

cocoa - アレイ コントローラーの初期化を nib からコードに移動すると、テーブル ビューのバインディングが壊れる

  1. 私のウィンドウ コントローラ サブクラスはペン先の所有者です。
  2. ドキュメントのサブクラスで、配列コントローラーをコードでインスタンス化します。ドキュメントとウィンドウ コントローラーの両方がコードで使用します。
  3. 次のようにテーブルの列をバインドします: File Owner >> document._arrayController.arrangedObjects.attributeName
  4. テーブル ビューには行が表示されません。
  5. ウィンドウ コントローラもドキュメント クラスも-addObserver、テーブル ビューに関連するメッセージを受け取りません。

明らかに、この配列コントローラーに正しくバインドしていません。テーブル ビューの列を配列にバインドする方法について、基本的なことが欠けていると思います。

この問題は、いくつかのリファクタリング中に発生しました。以前は nib でアレイ コントローラをインスタンス化していました。ドキュメントはファイルの所有者であり、アレイ コントローラのアウトレットがありました。バインディングはMy Array Controller > ArrangeObjects > attributeNameのように見えました。すべてがうまくいきました。

ドキュメントは配列コントローラを介してオブジェクトの挿入を処理するため、ウィンドウ コントローラがそれを作成する責任を負うべきではないと思いました。ウィンドウコントローラーはペン先の新しい所有者なので、ペン先から削除しました。のコードで作成します-makeWindowControllers。(私は初期化についてこの関連する質問をしました。)

これをデバッグしているときに、別のことを発見しました。ウィンドウコントローラーがテーブルビューのデータソースであり、実装する場合-numberOfRowsInDataSource:

テーブル ビューはそれを呼び出し、-addObserverすべての列のメッセージを送信し、バインディングを使用して各セルの値を実際に読み込みます。ただし、特定のセルの値をロードする場合、n 番目のオブジェクトの属性値をロードするのではなく、オブジェクトの列全体のarrangedObjects属性値をロードします。これらの配列を値トランスフォーマー (正しく処理できない) に渡し、配列をテキスト セル (収まらない) に表示します。description

ウィンドウ コントローラーがテーブル ビューのデータ ソースであるが、列がバインドを使用する場合、テーブル ビューは の結果を無視する-numberOfRowsInTableViewか、まったく呼び出してはならない場合があります。(セレクターに応答するとreturn 0、実行時エラーが回避されるだけです。データ ソースは、セルのツール ヒントを実装するために最初に設定されているだけです。 ) また、ペン先で配列コントローラーを作成したときに、これらすべてが正常に機能していました。

いくつかの考え:

  1. IB を使用して、テーブルの列を別のオブジェクトが所有する配列コントローラーにバインドすることは可能ですか?
  2. 配列コントローラを nib に戻し、ウィンドウ コントローラにそれをドキュメント インスタンスと共有させる必要がありますか? (それは恐ろしいデザインのように聞こえます。)
  3. ウィンドウ コントローラ用とドキュメント用の 2 つのアレイ コントローラを使用する必要がありますか?

追加した:

バインディングと共にテーブル ビュー データ ソースを使用した理由は、次のメソッドを使用してドラッグ アンド ドロップの並べ替えを実装するためです。

  • tableView:writeRowsWithIndexes:toPasteboard:
  • tableView:validateDrop:proposedRow:proposedDropOperation:
  • tableView:acceptDrop:row:dropOperation:
0 投票する
1 に答える
250 参照

objective-c - NSWindowController で nib をロードしても効果がありません

私のアプリには、設定ウィンドウがあります。このウィンドウをロードするには、このコードを使用します

しかし、これは効果がありません (設定ウィンドウは開きません)。

Xcode 4.1 DP1 を使用すると、このコードが機能します。Xcode を 4.2 にアップグレードすると、コードが機能しなくなりました。

どこに問題があるのでしょうか? タク!

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

objective-c - NSWindowを表示できません

皆さんが私を助けてくれることを願っています。通常、私は助けを求めませんが、私はしばらくの間この問題を抱えています。

XIBファイルから新しいウィンドウを作成するこのアクションがあります

そして、この結果を得ました