問題タブ [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.
objective-c - NSCollectionViewItem のビューのサイズを変更します
NSCollectionViewItem のビューのサイズをプログラムで設定するにはどうすればよいですか?
私は NSCollectionView サブクラスでこれをやってみました:
ただし、このコードは効果がありません。NSCollectionViewItem に使用する NSView をサブクラス化し、setFrame: を initWithCoder メソッドに追加しようとしましたが、そうすると EXC BAD ACCESS クラッシュが発生します。
cocoa - NSTableView と NSCollectionView の違い
Snow Leopard アプリを開発するためにどの道をたどるかを決めようとしています。まず、明らかな違いを紹介する必要があります。
NSTableView
データの同じ「要素」(行)のさまざまな部分を表すために複数のデータ列を持つことができ、NSCollectionView
データのグリッドも表示できますが、すべての行 + 列の組み合わせは独自の要素です。私の目的のために、1 つの列を扱っていると仮定します。
私が知る限り、
NSCollectionView
item はNSView
すべて同じ次元でなければならない です。また、 とは異なりNSTableView
、 collectionview アイテムはNSCollectionView
必要に応じて から提供されるのではなく、 にコピーされますdataSource
(これについてはよくわかりません。間違っている場合は訂正してください)。NSTableView
NSCell
行の表示をカスタマイズする場合は、s を使用します。NSCell
ではないので、イベントNSResponder
をどのように処理しますか (iTunes の矢印がどのように機能するかのように、セルに何らかのアクセサリを追加したい場合 (ただし、iTunes は Carbon です)NSCell
。IB でいくつかのサブクラスが表示されるのを見てきました)それらの兄弟と同等である必要がありますが、オブジェクトを?)NSControl
に入れたい場合はどうすればよいですか?)。MySweetView
NSCell
バインディングに関してはどちらもほぼ同じように見えますね。
最後に、
NSCollectionView
その要素のアニメーションでうまく機能するように見えます (たとえば、アイテムの再配置やフィルター処理など)。NSTableView
その行でこれを行うことができますか?
他に考慮すべきことはありますか?
objective-c - スクロールでNSCollectionViewを再描画すると、グラフィックが分割されます
NSCollectionView
ウィンドウをスクロールすると、が視覚的にNSCollectionViewItem
壊れてしまうという小さな刺激があります。
分割の速度は、スクロールの速度によって異なります。たとえば、ゆっくりスクロールすると、分裂がより頻繁に発生します。高速スクロールはそれほど多くありません。問題は、NSCollectionViewItem
私が使用しているカスタムNSViewが表示可能なフレームの境界を越える場合にあるようです。
私のNSView(のカスタムビューNSCollectionViewItem
)には、非常に単純な描画アルゴリズムがあります。複雑すぎることはありません。
基本的に、drawRectメソッドのdirtyRect内にフレームを作成し、その中にいくつかのフレームを作成します。
コードの前後でフォーカスをロックして解放し、グラフィックスコンテキストを設定して復元しようとしましたが、いずれも問題を解決していないようです。
私はSnowLeopardを使用していますが、それが違いを生むとは思いません。
ソリューションの更新
ここに興味のある人は、NSResponderが推奨する問題の解決策です。私は、指摘されたように、間違ったことを行う方法にmOuterFrame
基づいてイニシャルを作成していました。からのクイックチェンジ:drawRect:
dirtyRect
0ベースの起点へ:
上記のコード変更はそれ自体で問題を解決するのに十分でしたが、提案されたように、私は長方形のみを使用しているので、コードの効率も微調整しました。2ピクセルの線を取得するには、変更を追加する必要がありました。新しい方法:
cocoa - Cocoa でユーザー選択用のサムネイル ベースのビューを実装するにはどうすればよいですか?
私は非常に単純なニーズだと思っていましたが、それを実装する方法がわかりません。
インターフェイスのさまざまなポイントで、ユーザーはかなり視覚的なものを選択するように求められます (ページのレイアウトや色のオプションを選択するなど)。これらの選択は、事前に定義された一連のオプションから行われます。通常は NSPopUpButton または NSTableView を使用しますが、各選択オプションのサムネイルをユーザーに表示してもらいたいと思います。これらのサムネイルも適切なサイズである必要があります (少なくとも 100x100 ピクセル)。各サムネイルには、テキスト ラベルも付ける必要があります。一度に選択できるのは 1 つだけです。
Apple は、iWeb で次のようなものを実装しています。
iweb http://img187.imageshack.us/img187/5744/iweb.jpg
もちろん、小さなアイコンで次のようなものを見たことがあるでしょう:
私は NSCollectionView が出発点であると考えていますが、これがはるかに複雑なシナリオで使用されているのを見たことがありません (例: ディレクトリの内容を表示する、ドラッグ アンド ドロップをサポートするなど)。私が見つけたコードはかなり複雑です。
このビューに事前定義された静的データを入力し、単純な選択を可能にする簡単なソリューションはありますか? つまり、ポップアップ ボタンの機能を探していますが、別のユーザー インターフェイスを探しています。
更新: 解決策
提案どおり、IKImageBrowser を使用しました。このチュートリアルはとても役に立ちました。IB: インターフェースで IKImageBrowser を作成し、それをスクロール ビューでラップして、ブラウザ オブジェクトのデータ ソースにしました。コード: チュートリアルで説明されているようにコントローラーにデータ ソース プロトコルを実装し、allowsMultipleSelection と allowEmptySelection を NO に設定し、チュートリアルで説明されているとおりに URL 画像表現を使用してカスタム画像オブジェクトを作成しました。
次に、選択を取得するために、ユーザーが「OK」ボタンをクリックしたときにトリガーされる次のメソッドを作成しました。
チュートリアルは非常に役に立ちます。画像の追加やズーム スライダーなどについては無視してください。
nstableview - Cocoa インターフェイス設計に関する質問
私が設計しているウィンドウに最適なのは、配列の要素ごとに 2 つの行を持つテーブルです。最初の行に 1 つのチェックボックスと 2 つのポップアップがあり、2 番目の行はテキスト入力に使用されます。NSTableView について私が理解していることに基づいて、それは不可能です。NSCollectionView を調べましたが、その経験がないため、標準の 4 列のテーブルを選択するか、NSCollectionView に取り組みます。その前に、経験豊富な Cocoa 開発者の意見を聞きたいと思いました。
ありがとう
cocoa - NSCollectionView はサブビューの幅を自動サイズ変更して 1 列を表示できますか
NSCollectionView
のコレクションを含む がありますCustomViews
。最初は、サブビューをグリッドのように列と行に並べて表示しました。次にColumns
、IB のプロパティを 1 に設定したので、行に次々と表示されるようになりました。ただし、 myCustomView
は幅 400px で autoresize に設定されており、NSCollectionView
は幅 400px で 1 列に設定されていますが、サブビューは幅約 80px で描画されます。
次のように呼び出すことで、これを回避できることがわかっています。
awakeFromNib
しかし、このコードを my onlyのメソッドに入れるWindowController
と、プログラムの起動時に正しい幅が設定されます。ウィンドウのサイズを変更すると (および指定したNSCollectionView
とおりに自動サイズ変更されます)、CustomViews は最初に設定された幅のままです。
必要に応じてサブビューのサイズを自分で変更できることをうれしく思いますが、私は Cocoa を初めて使用するので、そのようなことを行う方法を説明する記事を見つけることができないようです。誰かが私を正しい方向に向けることができますか?
アンソニー
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番目のレベルで壊れているのはアレイコントローラーのバインディングであるように私には思えます。
この絡み合ったペン先の混乱の中でデバッグを開始する方法すら知りません。提案?
iphone - Cocoa-Touch 用 NSCollectionView (iPhone/iPad)
実装を開始していましたが、ココア タッチ用の既存の NSCollectionView のようなクラスについて誰かが知っているかどうか疑問に思っていました。
objective-c - NSCollectionView での選択の強調表示
私は、NSCollectionView
マイナーではあるが重大な例外を 1 つ扱っています。コレクション内の選択された項目を取得して強調表示します。
私は Snow Leopard の前にこのすべての作業を行っていましたが、何かが変わったようで、指を置くことができないのでNSCollectionView
、基本的なテストに戻って、NSCollectionView を作成するための Apple のドキュメントに従いました。
コレクション ビューは、クイック スタート ガイドに従って正常に動作します。ただし、このガイドでは、 以外の選択については説明しません"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 を にバインドする次のステップに進みましたNSCollectionView
。NSCollectionView
また、IBで選択できるように設定しました。
NSCollectionView
ほとんどの Cocoa UI ビューとは異なり、デフォルトで選択されたハイライトがないように見えます。
したがって、私の問題は実際には関連する問題に帰着しますが、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*