【问题标题】:Need to show all items, one item in a row需要显示所有项目,连续一个项目
【发布时间】:2020-06-05 16:01:00
【问题描述】:

我有一个从 Firebase 实时数据库填充的 collectionView。它应该像whatsapp一样工作。

我创建了一个 collectionView 单元格以在标签中显示消息。

我已将 collectionView 的滚动方向设置为垂直。

我已将单元格高度设置为 40,这里有 sizeForItemAt 方法:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {


    return CGSize(width:collectionView.frame.size.width, height:40)

   }

显示项目,但不是全宽,也不是每行一个项目。

这里有一个截图:

我需要更改哪些内容才能连续获取每个项目?

【问题讨论】:

  • 您是否正确设置了委托和数据源。
  • 顺便说一句,为什么不使用UITableView? UITableView 可以更好地处理这些场景。

标签: ios swift uicollectionview


【解决方案1】:

似乎这里没有调用该方法。您需要将collectionViewdelegate 设置为class。将此添加到viewDidLoad

collectionView.delegate = self

建议的方法:根据您的要求,我建议的方法是使用UITableView。所有单元格都扩展了UITableView 的整个宽度。您只需通过此方法提供单元格的高度即可。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    40
}

【讨论】:

  • 我已将两个代表设置如下:chatCV.delegate = self. chatCV.dataSource = 自我
  • 但结果相同
  • 检查方法是否被使用断点或打印语句调用。
  • 每个项目调用一次
  • 尝试打印collectionView.frame.size.width。找到宽度不是超视图宽度的原因。在您设置框架或提供约束的位置添加代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 2023-03-17
  • 2017-08-28
相关资源
最近更新 更多