問題タブ [nscollectionviewitem]

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 に答える
424 参照

objective-c - NSCollectionView をサブクラス化した後の描画の問題

OK、これが私がやったことです:

  • を持っていますNSCollectionView
  • アイテムを「選択」し、アイテムが選択されたときにカスタム境界線を描画できるようにしたかった
  • サブクラス化NSCollectionViewItemしました (選択を可能にするため)
  • 境界線を描画するためにNSView、ビューをサブクラス化しましたNSCollectionViewItem

コード

ビューアイテム

カスタム ビュー

ただし、描画に問題があるようです。例えば:

  • コレクション ビューのコンテナーのサイズを変更すると、外側のボックスに奇妙な線が表示される
  • コレクション ビューのアイテムが 100% 表示されていない場合 (下にスクロールされているなど)、選択枠はまったく表示されません (表示されている部分だけを描画することを期待しています)。

いくつかの例

NSCollectionView 選択アイテムの描画の問題

NSCollectionView の描画の問題

どうしたの?


PS私は Cocoa での描画やカスタム ビューの第一人者ではありません。そのため、アイデアやヘルプは大歓迎です。

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

objective-c - NSCollectionView をクリックすると、常に同じオブジェクトが返されます

のアイテムとして使用されるNSCollectionViewItemサブクラスがあります。コレクション ビュー内のすべてのアイテムを列挙して、次のコードで各アイテムのデリゲートを設定する必要があります。MyItemNSCollectionView

デバッガーを使用して、このコードがアスペクトとして機能し、各反復で毎回MyItem異なるオブジェクトを指していることがわかりました。問題はmouseDown、クラスでイベントを使用するMyItemと、どのアイテムをクリックしても同じオブジェクトを受け取ることNSCollectionViewです。コレクション ビューは 1 つのクラス (セル テンプレート インスタンス?) のみを使用しているようです。誰が何が起こっているのか考えていますか? ありがとう

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

objective-c - NSCollectionView アイテム ビュー アクションで表されるオブジェクトを取得する

ここに私が持っているものがあります:

  • アンNSCollectionView
  • 経由で移入NSArrayController
  • 各「アイテム」 ( NSCollectionViewItem) は、添付ビューにそのコンテンツを表示します
  • このビューにはNSButton

さて、質問:

ユーザーがボタンをクリックしたとき、どのオブジェクトが表されているかをどのように判断できますか? (ボタンが属する特定のビューに添付されたアイテム)

PS私は明らかに次のようなことができます:

しかし、機能はしますが、見た目はまったく良くありませ

アイデア?

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

objective-c - NSCollectionViewItem からのポップオーバー セグエ

TL;WR

クローン ビュー (NSCollectionViewItem) から popover-segue する最良の方法は何ですか?


こんにちは、

itemPrototype からセグエする方法を見つけようとしていますが、期待していたほど簡単ではなく、多少つまずきました。

それぞれにボタンが付いた可変数の NSCollectionViewItems を持つ NSCollectionView があります。ボタンから小さな情報ウィンドウにセグエするために必要なことは、ポップオーバーセグエを介してそのウィンドウをボタンに接続することだけだと思っていましたが、運が良ければ、それはこれが行われる方法ではありません.

NSCollectionViewItem プロトタイプのボタンは複製されて NSCollectionView に入力されるため、呼び出されたときに混合メッセージをセグエに渡していると思います。具体的には、ボタンの 1 つを押すと、次のエラーが表示されます。

主に、私がそこから得ているのは恐怖感です。また、クローンが好きだとはあまり思いません (ダークサイドにいる必要があります)。

ストーリーボードを介してこのポップオーバー セグエを作成する代替案を探していましたが、これは一般的な問題ではないようです (または、OS X の比較的少数の開発者にまだ慣れていません)。

具体的には、私の質問は次のとおりです。itemPrototype からポップオーバー セグエを「実行」するにはどうすればよいですか? プログラムでこれを行うことは間違いなく問題ありませんが、Objective C で gui コードを書いたことがないので、理解する前に、このようなセグエが確実に可能であることを知りたいと思います。技術的に不可能なため、髪の毛を引き抜くことはしたくありません。

これを読んでくれてありがとう!質問をより明確にするために、詳細を提供できるかどうかをお知らせください。

マイケル

編集 [2015-05-15 18:59]

私が求めていることを説明するために、以下に 2 つの画像を示します。コレクション ビューの例と、コレクション ビューのアイテムに適用したいポップオーバー セグエの例です。少しわかりにくいかもしれませんが、ご参考になれば幸いです。ご不明な点がありましたらお知らせください。

コレクションビュー 表示したい

編集 [2015-05-15 19:08]

上の 2 つの図では、私が達成したいことを十分に説明できない可能性があります。そのため、次の図は私の最終目標を表したものです。うまくいけば、これですべてが明らかになります。

最終目標

マイケル

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

macos - 自動サイズ変更マージンを持つ中央揃えのアイテムで NSCollectionView を実装する方法は?

コレクション ビューに 1 つのアイテムがあるとします。そのアイテムはコレクション ビューの最初の行の中央に配置されます。

また、複数のアイテムがある場合、これらのアイテムはすべて、適切な間隔でコレクション ビューに水平に配置されます。

コレクション ビューのサイズが変更された場合、コレクション ビューの新しいサイズに合わせてアイテム間の間隔が同時に変更されます。

の既定の動作でNSCollectionViewは、複数のアイテム間にスペースを空けることなく、アイテムを左側に揃えます。

layoutManagerコレクション ビューのレイヤーを使用してアイテムをレイアウトする必要がありますか?

データ バインディングを使用してアイテムを提供しているため、制約を挿入するのは簡単ではないようです。

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

objective-c - NSCollectionViewItem への NSButton のバインディング:presentedObject?

NSCollectionViewItem のビューにボタンを事前に追加すると、そのアクションをインスペクターにバインドできます。

ここに画像の説明を入力

これは問題なく動作します。

ビューの 内でそのボタンをプログラムで作成したいのですが、インスペクターの「バインド先: コレクション ビュー アイテム」と同じ結果を得るにはmouseDown:、オプションに何を割り当てればよいでしょうか?bind:

コードは次のとおりです:(Swift)

編集: NSCollectionViewをサブクラスし、オーバーライドnewItemForRepresentedObject:して、presentedObject をサブクラス ビューに割り当てることで、それを行うことができました。

NSCollectionViewをサブクラス化せずに方法があるかどうかを知りたいです。

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

cocoa - NSCollectionView は何も表示しません

私はこのガイドに従おうとしました:

コレクション ビューのクイック スタート

コレクション ビュー アイテムで NSImageView を使用します。

Image Well で画像を設定しても、コードで配列を設定しても、何も表示されません。

だから私はプログラムでそれをやろうとしました

コレクション ビュー アイテム (サブクラス化)。

コレクション ビュー アイテムをサブクラス化しない場合、Xcode はプロトタイプ セットがないことを通知します。

このコレクション ビューを動作させることができません :-(

とにかく、私はバインディングが好きなので、バインディングで正しい結果を達成したいと思います..リンク先のドキュメントのすべての箇所を確認して再確認しましたが、すべて問題ないようです。主な違いは、ドキュメントがアプリ デリゲートを使用していることです。私はビュー コントローラーを使用しています。

私は KVC メソッドを迅速に翻訳しました。それらが呼び出されたことを知っているので、それらは正しいと思います。ここにそれらがあります: