16

コレクションビューセルの一部としてコレクションビューを持つことに興味がありますが、何らかの理由でこれがどのように行われるかわかりません。セルコレクションビューに必要なメソッドをどこに実装しますか?

4

4 に答える 4

13

Ash Furrow が書いた記事で、を のUICollectionView中に入れる方法が説明されていUITableViewCellます。内で使用する場合も、基本的には同じ考え方UICollectionViewCellです。

于 2013-07-18T17:07:37.490 に答える
4

これはこの回答には遅すぎますが、他の人に役立つかもしれません。これはUICollectionView内の例ですUICollectionViewCell

を持つことから始めましょうmainCollectionView。次に、このコレクションの各セルで、新しいUICollectionView適切な場所を作成して初期化します。これは、UICollectionView の次のデリゲートにあります。

func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath)

たとえば、MainCollectionViewCellここを初期化しMainCollectionViewCell、ロジックを処理して新しいUICollectionView

guard let collectionViewCell = cell as? MainCollectionViewCell else { return }

    collectionViewCell.delegate = self

    let dataProvider = ChildCollectionViewDataSource()
    dataProvider.data = data[indexPath.row] as NSArray

    let delegate = ChildCollectionViewDelegate()

    collectionViewCell.initializeCollectionViewWithDataSource(dataProvider, delegate: delegate, forRow: indexPath.row)

    collectionViewCell.collectionViewOffset = storedOffsets[indexPath.row] ?? 0

MainCollectionViewCellこれは、新しいを作成するイニシャライザですUICollectionView

func initializeCollectionViewWithDataSource<D: protocol<UICollectionViewDataSource>,E: protocol<UICollectionViewDelegate>>(dataSource: D, delegate :E, forRow row: Int) {

    self.collectionViewDataSource = dataSource

    self.collectionViewDelegate = delegate

    let flowLayout = UICollectionViewFlowLayout()
    flowLayout.scrollDirection = .Horizontal

    let collectionView = UICollectionView(frame: self.bounds, collectionViewLayout: flowLayout)
    collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseChildCollectionViewCellIdentifier)
    collectionView.backgroundColor = UIColor.whiteColor()
    collectionView.dataSource = self.collectionViewDataSource
    collectionView.delegate = self.collectionViewDelegate
    collectionView.tag = row

    self.addSubview(collectionView)

    self.collectionView = collectionView

    collectionView.reloadData()
}

それが役立つことを願っています!!

私はこれの例を作成し、github に入れました。UICollectionView内での使用を示しますUICollectionViewCell

https://github.com/irfanlone/Collection-View-in-a-collection-view-cell

于 2016-04-12T01:04:22.233 に答える