問題タブ [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.
objective-c - NSCollectionView をサブクラス化した後の描画の問題
OK、これが私がやったことです:
- を持っています
NSCollectionView
- アイテムを「選択」し、アイテムが選択されたときにカスタム境界線を描画できるようにしたかった
- サブクラス化
NSCollectionViewItem
しました (選択を可能にするため) - 境界線を描画するために
NSView
、ビューをサブクラス化しましたNSCollectionViewItem
コード
ビューアイテム
カスタム ビュー
ただし、描画に問題があるようです。例えば:
- コレクション ビューのコンテナーのサイズを変更すると、外側のボックスに奇妙な線が表示される
- コレクション ビューのアイテムが 100% 表示されていない場合 (下にスクロールされているなど)、選択枠はまったく表示されません (表示されている部分だけを描画することを期待しています)。
いくつかの例
どうしたの?
PS私は Cocoa での描画やカスタム ビューの第一人者ではありません。そのため、アイデアやヘルプは大歓迎です。
objective-c - NSCollectionView をクリックすると、常に同じオブジェクトが返されます
のアイテムとして使用されるNSCollectionViewItem
サブクラスがあります。コレクション ビュー内のすべてのアイテムを列挙して、次のコードで各アイテムのデリゲートを設定する必要があります。MyItem
NSCollectionView
デバッガーを使用して、このコードがアスペクトとして機能し、各反復で毎回MyItem
異なるオブジェクトを指していることがわかりました。問題はmouseDown
、クラスでイベントを使用するMyItem
と、どのアイテムをクリックしても同じオブジェクトを受け取ることNSCollectionView
です。コレクション ビューは 1 つのクラス (セル テンプレート インスタンス?) のみを使用しているようです。誰が何が起こっているのか考えていますか? ありがとう
objective-c - NSCollectionView アイテム ビュー アクションで表されるオブジェクトを取得する
ここに私が持っているものがあります:
- アン
NSCollectionView
- 経由で移入
NSArrayController
- 各「アイテム」 (
NSCollectionViewItem
) は、添付ビューにそのコンテンツを表示します - このビューには
NSButton
さて、質問:
ユーザーがボタンをクリックしたとき、どのオブジェクトが表されているかをどのように判断できますか? (ボタンが属する特定のビューに添付されたアイテム)
PS私は明らかに次のようなことができます:
しかし、機能はしますが、見た目はまったく良くありません。
アイデア?
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 つの図では、私が達成したいことを十分に説明できない可能性があります。そのため、次の図は私の最終目標を表したものです。うまくいけば、これですべてが明らかになります。
マイケル
macos - 自動サイズ変更マージンを持つ中央揃えのアイテムで NSCollectionView を実装する方法は?
コレクション ビューに 1 つのアイテムがあるとします。そのアイテムはコレクション ビューの最初の行の中央に配置されます。
また、複数のアイテムがある場合、これらのアイテムはすべて、適切な間隔でコレクション ビューに水平に配置されます。
コレクション ビューのサイズが変更された場合、コレクション ビューの新しいサイズに合わせてアイテム間の間隔が同時に変更されます。
の既定の動作でNSCollectionView
は、複数のアイテム間にスペースを空けることなく、アイテムを左側に揃えます。
layoutManager
コレクション ビューのレイヤーを使用してアイテムをレイアウトする必要がありますか?
データ バインディングを使用してアイテムを提供しているため、制約を挿入するのは簡単ではないようです。
objective-c - NSCollectionViewItem への NSButton のバインディング:presentedObject?
NSCollectionViewItem のビューにボタンを事前に追加すると、そのアクションをインスペクターにバインドできます。
これは問題なく動作します。
ビューの 内でそのボタンをプログラムで作成したいのですが、インスペクターの「バインド先: コレクション ビュー アイテム」と同じ結果を得るにはmouseDown:
、オプションに何を割り当てればよいでしょうか?bind:
コードは次のとおりです:(Swift)
編集: NSCollectionViewをサブクラス化し、オーバーライドnewItemForRepresentedObject:
して、presentedObject をサブクラス ビューに割り当てることで、それを行うことができました。
NSCollectionViewをサブクラス化せずに方法があるかどうかを知りたいです。
cocoa - NSCollectionView は何も表示しません
私はこのガイドに従おうとしました:
コレクション ビュー アイテムで NSImageView を使用します。
Image Well で画像を設定しても、コードで配列を設定しても、何も表示されません。
だから私はプログラムでそれをやろうとしました
コレクション ビュー アイテム (サブクラス化)。
コレクション ビュー アイテムをサブクラス化しない場合、Xcode はプロトタイプ セットがないことを通知します。
このコレクション ビューを動作させることができません :-(
とにかく、私はバインディングが好きなので、バインディングで正しい結果を達成したいと思います..リンク先のドキュメントのすべての箇所を確認して再確認しましたが、すべて問題ないようです。主な違いは、ドキュメントがアプリ デリゲートを使用していることです。私はビュー コントローラーを使用しています。
私は KVC メソッドを迅速に翻訳しました。それらが呼び出されたことを知っているので、それらは正しいと思います。ここにそれらがあります: