私は少しここで失ったよインスタンス化したことがない: 私はColorPickerのように振る舞ってボタンを作成しました:それをクリックすると、ポップオーバーでcollectionViewを示しています。 Iは最初のビュー+ collectionView(scrollView + clipViewとして埋め込まれた)を含有するニブFILでそれをやりました。 ものはうまく動作します。NSCollectionViewItem
nibファイルは非常に簡単です(と、プログラムでビューを設計する際に自分のコーディングスキルを向上させる)ように、私は、nibファイルを取り除くと、コード内の欠けている部分を書く取得することを決めました。 事は、私がcollectionViewの内容以外の仕事を得るために管理し、あります。
func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem
データソースを管理することになっている、方法
collectionView.makeItem(withIdentifier: String, for: IndexPath)
は動作しません:深い調査の後、メソッド内で、ことが表示されます。実際には、中:私は(ないゼロ、初期化されていない)にステップするとき、デバッガが言うように
let item = collectionView.makeItem(withIdentifier: ColorPickerPopover.itemIdentifier, for: indexPath)
項目は、初期化されていません。どうやら、makeItemメソッドは、私が作ったサブクラスからcollectionViewItemをインスタンス化することはありません。 識別子は微細であり、両方のプロジェクトは、これらの点で同一であるようcollectionView.register機能は、単にペン先のバージョンと同様に、呼び出されます。 makeItem関数は、単にサブクラス化したNSCollectionViewItemのloadViewメソッドを呼び出しません。
ヒント?クラス
使用register(_:forItemWithIdentifier:)
を使用して
(:
ジョシュ
collectionView.makeItem(withIdentifier:for:)
方法で