質問

私は見ることがで使用それぞれ多彩な製品。いIBOutletのCollectionViewItemから私としているのをよく覚のインターフェイスをビルダを構築します。たいへのアクセスから値をrepresentedObject(中核をなすデータオブジェクト)を示す。たとえばどのようにしているか--アクセスシーケンス値のrepresentedObject:

できます。hファイル:

IBOutlet NSCollectionViewItem *item; // Connected in IB

できます。mファイル

NSString *seq = [[item representedObject] valueForKey:@"seq"];
NSLog(@"Seq: %@", seq); // returns Seq: (null)

のを知っている配列番号が疎かで牲ラベルのCollectionViewItemュIBのrepresentedObject.配列番号キーパスことになる。

あらゆるアイデアかうアクセスに価値が配列番号のためのコードの場合はnullを返します?

役に立ちましたか?

解決

これはNSCollectionViewItemプロトタイプNSCollectionViewItemにそれらのアイテムのビューからIBOutlet接続を介してコピーしていない可能性が非常に高いです。したがって、itemがゼロであるので、seqもゼロになります。

NSCollectionViewItemインスタンスにアクセスするための典型的なパターンは、プロトタイプに結合することです。あなたはこれをしなかったし、それが動作することをことを言及します。それはそれを行うための典型的な、サポートされている方法だというだけの理由それはある。

あなたが本当にバインディングを提供することができない方法で、アイテムへの直接接続が必要な場合は、

、あなたはおそらくそれを手動で設定する必要があります。これを行う1つの方法は、スーパー、その後、手動で接続を行う呼び出し、NSCollectionViewItemの-copyWithZone:を上書きされます。

他のヒント

1)コレクションビュー

の項目をレンダリングするために使用されるのNSViewのサブクラス

2)このサブクラスにおいては、委任プロパティを追加

3)Sublcass NSCollectionViewItem

方法:

4)setviewコマンドを上書き。 NSCollectionViewItemインスタンス(すなわち、自己)に対するビューのデリゲートプロパティを設定する行を追加。

さて、NSViewのサブクラス内、デリゲートのプロパティ(たとえば、あなたがそのrepresentedObjectにアクセスすることができます)を介して対応するNSCollectionView項目にアクセスする必要があります。

私は同じ問題を抱えていたが、非常に簡単な解決策を見つけた:私は別の.xibでビューを入れて、(実際NSViewControllerです)NSCollectionViewItemでこれをリンク。次いで.xibは、セル毎に逆シリアル化され、すべてのアウトレットが設定されます。

  1. サブクラスNSView.
  2. 追加委譲方法はサブクラス...のようなもの - (void)mouseDownOnItemAtIndex:(NSUInteger)index 伝えるリスナーのユーザーをクリックした商品を特定のインデックス.
  3. プルのコレクションビューを使用します。superview同じクラスです。を変えるNSUInteger.店内のインデックス項目の手法を用いることによって [[collectionView subviews] indexOfObject:self].そのインデックスに委譲方法 index パラメータとします。
  4. のクラスに準じたプロトコルで定義されたNSView今後、これからmousedownイベントで特定の細胞です。ご希望の場合はrepresentedObjectの特定の項目は、コ collectionView:itemAtIndex の項目にアクセスで representedObject 物件 NSCollectionViewItem.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top