尝试将CollectionView添加到ResuableView Header(如Instagram或SNapchat)

时间:2019-05-26 21:42:58

标签: swift uicollectionview uicollectionreusableview custom-stories

我想在我的页眉中有一个CollectionView,它类似于在Instagram和Snapchat上供我的主CollectionView使用的CollectionView。当我尝试从库中添加collectionview并在实现委托方法后将标头设置为委托和数据源时,我仍然看不到标头中的任何内容。

    //let layout = UICollectionViewFlowLayout()

    let headerCollection = UICollectionView(frame: CGRect(x: 0, y: 0, width: 50, height: 90), collectionViewLayout: UICollectionViewFlowLayout())

    override func awakeFromNib() {
        super.awakeFromNib()

//       headerCollection.delegate = self
//        headerCollection.dataSource = self
    }


}

extension HeaderforFeed: UICollectionViewDataSource, UICollectionViewDelegate{
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return CollectionViewData.Dict_StrImg.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = UICollectionViewCell(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
        cell.backgroundColor = .red
        return cell
    }


}```

2 个答案:

答案 0 :(得分:0)

根据您的代码,我认为问题是您没有将其添加到标题中(我将其理解为UICollectionView中的标题部分)。如果是这样,请尝试将其添加到

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {

}

在这里,您可以将UICollectionView作为UICollectionReusableView添加自定义视图

我不知道这是否对您有帮助,但是根据您的问题,我理解了

答案 1 :(得分:0)

很好,我知道了。我将库中的collectionview添加到情节提要中的标题中。然后我将其连接为UICollectionReusableView类中的插座。然后,我让该类为collectionview而不是标头中的那个实现委托方法。

让reusableview成为委托和数据源,并且对我有用

//  HeaderforFeed.swift
//  finishedFeednStories
//
//  Created by Guh Suck Yu Mada
//  Copyright © 2019 Bumboklat. All rights reserved.
//

import UIKit

class HeaderforFeed: UICollectionReusableView {
    //let layout = UICollectionViewFlowLayout()


    @IBOutlet weak var storiesCollection: UICollectionView!


    override func awakeFromNib() {
        super.awakeFromNib()

       storiesCollection.delegate = self
        storiesCollection.dataSource = self
    }


}

extension HeaderforFeed: UICollectionViewDataSource, UICollectionViewDelegate{
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return CollectionViewData.Dict_StrImg.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "storiesCell", for: indexPath) as! StoriesCell

        cell.storiesImg.image = Array(CollectionViewData.Dict_StrImg)[indexPath.row].value
        cell.storiesLabel.text = Array(CollectionViewData.Dict_StrImg)[indexPath.row].key

        return cell
    }


}