問題タブ [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 投票する
2 に答える
2411 参照

objective-c - NSCollectionViewItem ダブルクリック アクション?

ユーザーが をダブルクリックしたときのアクションを設定するにはどうすればよいですかNSCollectionViewItemNSTableViewたとえば、setDoubleActionメソッドがあります。に似たものはありNSCollectionViewますか?

ありがとう

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

objective-c - NSCollectionView は何も描画しません

を設定しようとしていますNSCollectionView(過去に成功しましたが、何らかの理由で今回は失敗しました)。

「TestModel」というモデルクラスがありNSString、文字列を返すだけのプロパティがあります(現在はテスト目的のためだけです)。次にNSMutableArray、メイン アプリのデリゲート クラスでプロパティ宣言を行い、この配列にTestModelオブジェクトのインスタンスを追加します。

次に、Content Array がアプリのデリゲートにバインドされた Array Controller を用意しますNSMutableArray。ここまでのすべてが正常に機能していることを確認できます。NSLogging:

うまくいきました。

次に、コレクション ビューのセットアップ (itemPrototype とコンテンツ)、およびコレクション ビュー アイテム (ビュー) に適切なバインディングをすべて用意します。次に、 Collection View にバインドされたコレクション アイテム ビューにテキスト フィールドを作成しますItem.representedObject.teststring。ただし、アプリを起動すると、コレクション ビューには何も表示されず、空白の白い画面だけが表示されます。私は何が欠けていますか?

更新:これが私が使用するコードです(wil shipleyによって要求されました):

そして、前述のように、Array Controller のコンテンツ配列はこの「objectArray」にバインドされ、NSCollectionView の Content は Array Controller.arrangedObjects にバインドされます。NSLogging [arrayController ArrangeObjects] によって配列コントローラーにオブジェクトが含まれていることを確認でき、正しいオブジェクトが返されます。NSCollectionView には何も表示されません。

更新 2: [collectionView content] をログに記録すると、何も得られません:

問題はおそらくそこにあります。

更新 3:ここで要求されたのは、Xcode プロジェクトです。

http://www.mediafire.com/?mjgdzgjjfzw

メニューバー アプリなので、ウィンドウはありません。アプリをビルドして実行すると、「test」というメニューバー項目が表示されます。これにより、NSCollectionView を含むビューが開きます。

ありがとう

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

objective-c - NSCollectionViewItem のビューのサイズを変更します

NSCollectionViewItem のビューのサイズをプログラムで設定するにはどうすればよいですか?

私は NSCollectionView サブクラスでこれをやってみました:

ただし、このコードは効果がありません。NSCollectionViewItem に使用する NSView をサブクラス化し、setFrame: を initWithCoder メソッドに追加しようとしましたが、そうすると EXC BAD ACCESS クラッシュが発生します。

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

objective-c - スクロールでNSCollectionViewを再描画すると、グラフィックが分割されます

NSCollectionViewウィンドウをスクロールすると、が視覚的にNSCollectionViewItem壊れてしまうという小さな刺激があります。

分割の速度は、スクロールの速度によって異なります。たとえば、ゆっくりスクロールすると、分裂がより頻繁に発生します。高速スクロールはそれほど多くありません。問題は、NSCollectionViewItem私が使用しているカスタムNSViewが表示可能なフレームの境界を越える場合にあるようです。

私のNSView(のカスタムビューNSCollectionViewItem)には、非常に単純な描画アルゴリズムがあります。複雑すぎることはありません。

基本的に、drawRectメソッドのdirtyRect内にフレームを作成し、その中にいくつかのフレームを作成します。

コードの前後でフォーカスをロックして解放し、グラフィックスコンテキストを設定して復元しようとしましたが、いずれも問題を解決していないようです。

私はSnowLeopardを使用していますが、それが違いを生むとは思いません。

ソリューションの更新

ここに興味のある人は、NSResponderが推奨する問題の解決策です。私は、指摘されたように、間違ったことを行う方法にmOuterFrame基づいてイニシャルを作成していました。からのクイックチェンジ:drawRect:dirtyRect

0ベースの起点へ:

上記のコード変更はそれ自体で問題を解決するのに十分でしたが、提案されたように、私は長方形のみを使用しているので、コードの効率も微調整しました。2ピクセルの線を取得するには、変更を追加する必要がありました。新しい方法:

0 投票する
9 に答える
17733 参照

objective-c - NSCollectionView での選択の強調表示

私は、NSCollectionViewマイナーではあるが重大な例外を 1 つ扱っています。コレクション内の選択された項目を取得して強調表示します。

私は Snow Leopard の前にこのすべての作業を行っていましたが、何かが変わったようで、指を置くことができないのでNSCollectionView、基本的なテストに戻って、NSCollectionView を作成するための Apple のドキュメントに従いました。

http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/CollectionViews/Introduction/Introduction.html

コレクション ビューは、クイック スタート ガイドに従って正常に動作します。ただし、このガイドでは、 以外の選択については説明しません"There are such features as incorporating image views, setting objects as selectable or not selectable and changing colors if they are selected"

NSCollectionViewこれを例として使用して、コントローラー キーを使用しselectionIndexesてArray Controller を にバインドする次のステップに進みましたNSCollectionViewNSCollectionViewまた、IBで選択できるように設定しました。

NSCollectionViewほとんどの Cocoa UI ビューとは異なり、デフォルトで選択されたハイライトがないように見えます。

したがって、私の問題は実際には関連する問題に帰着しますが、2 つの異なる質問があります。

  1. アイテムの選択をキャプチャするにはどうすればよいですか?
  2. アイテムのハイライトを表示するにはどうすればよいですか?

NSCollectionViewのプログラミング ガイドはほとんどなく、Google を介したほとんどの検索では、Snow Leopard より前の実装が表示されるか、別の XIB ファイルのビューが使用されているようです。

後者 (ビュー用の別の XIB ファイル) の場合、これが前提条件である理由がわかりません。そうしないと、Apple がコレクション ビュー アイテムと同じバンドルにビューを含めなかったのではないかと疑っていたでしょう。

これが「木を見て木が見えない」問題になることはわかっています。一瞬。

いつものように、ありとあらゆる助けが大歓迎です。

更新 1

わかりましたので、選択したアイテムを見つけることを考えましたが、まだハイライトを理解していません。選択した項目を理解することに興味がある場合 (Apple ガイドに従っていると仮定します):

コントローラー (私のテストケースでは App Delegate) に以下を追加しました:

In awakeFromNib

新しい方法

非 GC の割り当てを解除することを忘れないでください

まだハイライト解像度を探しています...

更新 2

Macatomy のアドバイスを受けましたが、まだ問題がありました。関連するクラスメソッドを投稿して、どこが間違っているかを確認してください。

MyView.h

MyView.m

MyCollectionViewItem.h

"MyCollectionViewItem.m*

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

objective-c - そのビューの削除ボタンで特定のcollectionviewアイテムを削除したい

コレクションビューアイテムとそのプロトタイプビューがあります。そのプロトタイプビュー内に、小さなxボタンがあります。そのボタンで、その上にある正確なコレクションビューアイテムを削除したいと思います。

xボタンの周りのスペースをクリックすると、選択したアイテムを削除できますが、アイテムをクリックする前にボタンをクリックすると、最後に選択したアイテムのみが消去されます。

アイデア?

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

objective-c - NSCollectionViewItemのカスタムコントロール

NSCollectionViewItemのビュー内にカスタムコントロールを配置したいと思います。

BoxesViewというカスタムNSViewがあるとします。BoxesViewは、ビュー内に所定の数のボックスを描画する単なるビューです。そのボックスの数は、initメソッドで設定されます。8に設定したとしましょう。

コレクションビューをロードすると、ビュー内の他のすべてのコントロール(ボタン、スライダーなど)は正常に機能しますが、ビューが描画されません。

BoxesViewのdrawRectメソッドにブレークポイントを設定すると、描画するボックスの数が0であることが示されます。numBoxesを8に設定したinitメソッドにブレークポイントを設定すると、numBoxesが実際に8に設定されていることがわかります。また、コレクションビューに複数の行がある場合でも、initメソッドは1回だけ呼び出されます。

私は何が間違っているのですか?

アップデート

NSCollectionViewItemと同じxibにあるのではなく、xibからロードするようにitemPrototypeを設定することで、これを機能させることができました。これは素晴らしいですが、10.6でのみ機能し、10.5では機能しない点が異なります。

更新2

私がやろうとしているのは、すでに存在するNSCollectionViewItemに対して、すでに存在するビュー内にカスタムビューを貼り付けることです。何が起こるかというと、メンバー変数mBoxWidthが吹き飛ばされてゼロになるため、それを描画しようとしても何も起こりません。

@終わり

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

cocoa - カスタム NSView から NSCollectionViewItem に値を渡す

NSCollectionView のプロトタイプとして使用されるカスタム NSView 内に NSTabView があります。2 番目のタブには、NSButton ボタンと NSImageView オブジェクトがあります。

NSButton は、NSOpenPanel をトリガーする「参照」ボタンです。

ボタンのセレクターを MyCustomView の IBAction に接続しました。これにより、次のことが実行されます。

この「myImageView」を実行すると、Interface Builder で IBOutlet として接続したにもかかわらず、コンソールで「null」がトレースされます。理由を説明していただけますか?代わりにこれを行うにはどうすればよいですか? また、「fileURL」値を NSCollectionViewItem オブジェクトの「representedObject」に渡す必要がありますが、ここからアクセスする方法がわかりません。

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

objective-c - NSCollectionViewItemのアイテムアウトレットのNSViewサブクラスが一貫して描画されない

私はこれをどこでも探しましたが、運がありませんでした。プロジェクトでNSCollectionViewを使用しており、アレイコントローラーを介してCoreDataにバインドしています。希望どおりに表示するために、NSViewを新しいdrawRectメソッドでサブクラス化し、これをNSCollectionViewItemのビューアウトレットに接続しました。それはすべて正しく機能し、バインディングは良好ですが、何らかの理由でコレクションビューの最初のアイテムに対してのみカスタム描画を実行します。NSCollectionViewが新しいアイテムを作成するときにペン先をコピーするという事実に関係していると思います。これが私のdrawRectです:最初にメソッド:

@終わり

何か案は?

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

objective-c - バインディングなしでNSCollectionViewを使用する

NSCollectionViewバインディングなしで使用する方法はありますか?