21

NSCollectionView をビューにドラッグすると、NSCollectionViewItem がストーリーボードに表示され、浮遊します。

複数の NScollectionView を同じビューにドラッグするとします。NSCollectionViewItems がたくさんあります。コレクションビューは、どの NScollectionViewItem がそれに属しているかをどのように認識しますか? インターフェースビルダーで見ることができる2つの間の接続はありますか? インターフェイスビルダーに何も表示されませんか? どこでそれを見ることができますか?

編集: どうやらこれは Xcode のバグのようです。ストーリーボードに NSCollectionView を追加すると、NSCollectionViewItem へのリンクがなく、それらの間で itemPrototype アウトレットを接続することは不可能のようです。

このようなバグについて Apple に問い合わせたところ、「これは OS X の Storyboards に関する既知の問題です。代わりに Xibs を使用してください」という回答がありました。

4

8 に答える 8

4

@mostruash から受け入れられた回答を Objective-C で動作させることもできませんでしたが、別の回避策を思いつきました。collectionView IBOutlet プロパティのカスタム セッターを使用します。

- (void)setCollectionView:(NSCollectionView *)collectionView {
    NSCollectionViewItem *itemPrototype = [self.storyboard instantiateControllerWithIdentifier:@"collection_item"];
    collectionView.itemPrototype = itemPrototype;
    _collectionView = collectionView;
}
于 2015-01-05T23:55:52.473 に答える
4

はい、何時間も苦労した後、これがもう 1 つの Xcode バグであることを確認しました。

唯一の解決策は、ファイル Main.storyboard を編集し、次の行を CollectionView セクションの末尾の の直前に追加することです</collectionView>

<connections>
  <outlet property="itemPrototype" destination="XXXXXXX" id="Kaa-2J-b4e"/>
</connections>

ここで、XXXXXX は ID または CollectionViewItem です。もう 1 つの番号は、この ID がプロジェクトで既に使用されていない限り、私が投稿したものを保持できますが、これが発生する可能性は非常に低いです。

于 2014-10-25T02:54:58.410 に答える
2

とにかく、10.11 Apple Documents が言うので、私は同じ問題に陥ります:

" NSCollectionView の "itemPrototype" も切断して破棄する必要があります。これは 10.10 以前の API モデルの痕跡です。"

から: https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKit/#10_11CollectionView

ここでは、現在どのように機能するかを説明します。

したがって、古くから愛されている XIBS を使用する必要があります。

NSCollectionViewItem *item = [collectionView makeItemWithIdentifier:@"Thing" forIndexPath:indexPath];
于 2016-03-06T08:37:18.627 に答える
1

オブジェクト ライブラリ (Xcode の右下) に移動し、「オブジェクト」を検索します。「Interface Builder では使用できない NSObject サブクラスのインスタンスを提供します。」それをストーリーボードの ViewController のトップ バー (または、LHS のツリー ビューの ViewController の下) にドラッグ アンド ドロップします。次に、そのオブジェクトをクリックし、「Identity Inspector」でそのクラスを次のように設定します。あなたの ViewItem クラス。次に、Ctrl キーを押しながらコレクション ビューからオブジェクトにドラッグすると、「itemPrototype」として関連付けることができます。

于 2015-04-10T12:11:00.027 に答える