集合查看单元格未显示

时间:2016-09-12 17:51:49

标签: ios swift uicollectionviewcell collectionview

我知道有很多问题可以回答这个问题,但我的情况略有不同。如果您使用的是故事板,大多数答案都会告诉我删除这行代码:

collectionView?.registerClass(UICollectionViewCell.self,forCellWithReuseIdentifier:cellId)

但我不能这样做,因为我使用的是故事板和非故事板。

我从程序化推送视图控制器(故事板控制器 - 标签栏控制器)转换到此集合视图控制器(非故事板视图),如下所示:

func showChatLogController(user: User) {
    let chatLogController = ChatLogController(collectionViewLayout: UICollectionViewLayout())
    chatLogController.user = user
    chatLogController.hidesBottomBarWhenPushed = true
    navigationController?.pushViewController(chatLogController, animated: true)

}

我的集合视图代码似乎是写的,我不知道问题是什么。如果您需要在此处查看集合视图代码,请执行以下操作:

let cellId = "cellId"

override func viewDidLoad() {
    super.viewDidLoad()

    collectionView?.backgroundColor = UIColor.whiteColor()
    collectionView?.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: cellId)

    setUpInputComponents()

    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(SignUpViewController.dismissKeyboard))
    view.addGestureRecognizer(tap)
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 5
}

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellId, forIndexPath: indexPath)

    cell.backgroundColor = UIColor.blueColor()

    return cell
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    return CGSize(width: view.frame.height, height: 80)
} 

由于某种原因,它不显示细胞。我不知道为什么。任何帮助将不胜感激。

PS:我不知道这是否很重要但是要进入集合视图控制器,我来自标签栏控制器。

3 个答案:

答案 0 :(得分:2)

将您的收藏视图datasourcedelegate设置为viewDidload中的自我,

  yourCollectionView.dataSource = self
  yourCollectionView.delegate = self

答案 1 :(得分:0)

  • 是否会调用cellForRowAtIndexPath?如果您在其中打印某些内容会被记录吗?
  • 您的收藏视图是否显示在您期望的位置?如果设置背景颜色,你会看到它吗?
  • 在sizeForItemAtIndexPath中打印您要返回的大小。这是你期望的还是0潜行?

答案 2 :(得分:0)

我最近遇到此问题,发现我错误地实例化了Collection View控制器。我以前将其实例化为:

let CollectionViewController = CollectionViewController(collectionViewLayout: UICollectionViewLayout())

何时应该:

let CollectionViewController = CollectionViewController(collectionViewLayout: UICollectionViewFlowLayout())