問題タブ [nscollectionview]

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

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

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

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

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

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

cocoa - NSTableView と NSCollectionView の違い

Snow Leopard アプリを開発するためにどの道をたどるかを決めようとしています。まず、明らかな違いを紹介する必要があります。

NSTableViewデータの同じ「要素」(行)のさまざまな部分を表すために複数のデータ列を持つことができ、NSCollectionViewデータのグリッドも表示できますが、すべての行 + 列の組み合わせは独自の要素です。私の目的のために、1 つの列を扱っていると仮定します。

  1. 私が知る限り、NSCollectionViewitem はNSViewすべて同じ次元でなければならない です。また、 とは異なりNSTableView、 collectionview アイテムはNSCollectionView必要に応じて から提供されるのではなく、 にコピーされますdataSource(これについてはよくわかりません。間違っている場合は訂正してください)。

  2. NSTableViewNSCell行の表示をカスタマイズする場合は、s を使用します。NSCellではないので、イベントNSResponderをどのように処理しますか (iTunes の矢印がどのように機能するかのように、セルに何らかのアクセサリを追加したい場合 (ただし、iTunes は Carbon です) NSCell。IB でいくつかのサブクラスが表示されるのを見てきました)それらの兄弟と同等である必要がありますが、オブジェクトを?)NSControlに入れたい場合はどうすればよいですか?)。MySweetViewNSCell

  3. バインディングに関してはどちらもほぼ同じように見えますね。

  4. 最後に、NSCollectionViewその要素のアニメーションでうまく機能するように見えます (たとえば、アイテムの再配置やフィルター処理など)。NSTableViewその行でこれを行うことができますか?

他に考慮すべきことはありますか?

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

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

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

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

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

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

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

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

ソリューションの更新

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

0ベースの起点へ:

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

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

cocoa - Cocoa でユーザー選択用のサムネイル ベースのビューを実装するにはどうすればよいですか?

私は非常に単純なニーズだと思っていましたが、それを実装する方法がわかりません。

インターフェイスのさまざまなポイントで、ユーザーはかなり視覚的なものを選択するように求められます (ページのレイアウトや色のオプションを選択するなど)。これらの選択は、事前に定義された一連のオプションから行われます。通常は NSPopUpButton または NSTableView を使用しますが、各選択オプションのサムネイルをユーザーに表示してもらいたいと思います。これらのサムネイルも適切なサイズである必要があります (少なくとも 100x100 ピクセル)。各サムネイルには、テキスト ラベルも付ける必要があります。一度に選択できるのは 1 つだけです。

Apple は、iWeb で次のようなものを実装しています。

iweb http://img187.imageshack.us/img187/5744/iweb.jpg

もちろん、小さなアイコンで次のようなものを見たことがあるでしょう:

xcode

私は NSCollectionView が出発点であると考えていますが、これがはるかに複雑なシナリオで使用されているのを見たことがありません (例: ディレクトリの内容を表示する、ドラッグ アンド ドロップをサポートするなど)。私が見つけたコードはかなり複雑です。

このビューに事前定義された静的データを入力し、単純な選択を可能にする簡単なソリューションはありますか? つまり、ポップアップ ボタンの機能を探していますが、別のユーザー インターフェイスを探しています。

更新: 解決策

提案どおり、IKImageBrowser を使用しました。このチュートリアルはとても役に立ちました。IB: インターフェースで IKImageBrowser を作成し、それをスクロール ビューでラップして、ブラウザ オブジェクトのデータ ソースにしました。コード: チュートリアルで説明されているようにコントローラーにデータ ソース プロトコルを実装し、allowsMultipleSelection と allowEmptySelection を NO に設定し、チュートリアルで説明されているとおりに URL 画像表現を使用してカスタム画像オブジェクトを作成しました。

次に、選択を取得するために、ユーザーが「OK」ボタンをクリックしたときにトリガーされる次のメソッドを作成しました。

チュートリアルは非常に役に立ちます。画像の追加やズーム スライダーなどについては無視してください。

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

nstableview - Cocoa インターフェイス設計に関する質問

私が設計しているウィンドウに最適なのは、配列の要素ごとに 2 つの行を持つテーブルです。最初の行に 1 つのチェックボックスと 2 つのポップアップがあり、2 番目の行はテキスト入力に使用されます。NSTableView について私が理解していることに基づいて、それは不可能です。NSCollectionView を調べましたが、その経験がないため、標準の 4 列のテーブルを選択するか、NSCollectionView に取り組みます。その前に、経験豊富な Cocoa 開発者の意見を聞きたいと思いました。

ありがとう

0 投票する
8 に答える
9329 参照

cocoa - NSCollectionView はサブビューの幅を自動サイズ変更して 1 列を表示できますか

NSCollectionViewのコレクションを含む がありますCustomViews。最初は、サブビューをグリッドのように列と行に並べて表示しました。次にColumns、IB のプロパティを 1 に設定したので、行に次々と表示されるようになりました。ただし、 myCustomViewは幅 400px で autoresize に設定されており、NSCollectionViewは幅 400px で 1 列に設定されていますが、サブビューは幅約 80px で描画されます。

次のように呼び出すことで、これを回避できることがわかっています。

awakeFromNibしかし、このコードを my onlyのメソッドに入れるWindowControllerと、プログラムの起動時に正しい幅が設定されます。ウィンドウのサイズを変更すると (および指定したNSCollectionViewとおりに自動サイズ変更されます)、CustomViews は最初に設定された幅のままです。

必要に応じてサブビューのサイズを自分で変更できることをうれしく思いますが、私は Cocoa を初めて使用するので、そのようなことを行う方法を説明する記事を見つけることができないようです。誰かが私を正しい方向に向けることができますか?

アンソニー

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

objective-c - ネストされたNSCollectionViewのデバッグ

この問題のデバッグを開始する方法がよくわかりません。

NSCollectionViewがあります。NSCollectionViewItemプロトタイプビュー自体にNSCollectionView(およびこの第2レベルのコレクションビューにコンテンツを提供するためのNSArrayController)が含まれています。トップレベルビューがメインペン先にある場合、両方のレベルのコレクションビューが正常に機能します。

ただし、ビューをコピーして貼り付ける(およびすべての適切なバインディングを再接続する)と、ロードする新しいペン先にloadNibNamed:owner:、第2レベルのビュー(最上位のビューではない)が空白で表示されます。

調査の結果、myArrayController.arrangedObjects.@count実際には0であることがわかりました。ただし、コントローラーがバインドされているNSArray(File's Owner's representedObject.quizzes)は、要求される.@countと2を返します。

quizzes私がやったので、確かに2を返す必要があり[testCategoryA setQuizzes:[NSArray arrayWithObjects:testQuizA1,testQuizA2,nil]];ます。ペン先が読み込まれる前と後のクイズの設定をテストしました。どちらの場合も状況は同じです。

したがって、結論として、2つのレベルのアレイコントローラーを備えた2つのレベルのコレクションビューがあります。トップレベルは常に機能します。ただし、トップレベルがメインのnibファイルにない場合は、2番目のレベルが壊れます。そして、2番目のレベルで壊れているのはアレイコントローラーのバインディングであるように私には思えます。

この絡み合ったペン先の混乱の中でデバッグを開始する方法すら知りません。提案?

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

iphone - Cocoa-Touch 用 NSCollectionView (iPhone/iPad)

実装を開始していましたが、ココア タッチ用の既存の NSCollectionView のようなクラスについて誰かが知っているかどうか疑問に思っていました。

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*