gpt4 book ai didi

ios - 如果集合中只有 1 个元素,UICollectionView 不会进入 cellForItemAt 方法

转载 作者:行者123 更新时间:2023-11-29 05:22:11 25 4
gpt4 key购买 nike

我的 UITableViewCell 中有一个 UICollectionView,我想显示多个集合单元格。如果 numberOfItemsInSection 大于 1,它会完美工作。但是,如果我只想返回 1 个 Item,它会进入 numberOfItemsInSection 方法并返回 1。到目前为止一切都很好,但是当我只有 1 个 Item 时,不会输入 cellForRowAt 方法。只要我有 2 个或更多项目,它就可以完美工作。

我目前正在使用 Storyboard,但我也尝试以编程方式创建单元格,但它仍然不起作用。

TableView 单元格类

class TaskTableViewCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {

@IBOutlet weak var taskCollectionView: UICollectionView!

@IBOutlet weak var customerLabel: UILabel!
@IBOutlet weak var addressLabel: UILabel!

@IBOutlet weak var containerView: UIView!
@IBOutlet weak var colorView: UIView!
@IBOutlet weak var shadowView: UIView!

private var currentTask: Task!

func initialize(task: Task) {
currentTask = task

taskCollectionView.delegate = self
taskCollectionView.dataSource = self

taskCollectionView.allowsSelection = false
taskCollectionView.reloadData()
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return currentTask.tasks.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// Not entering if numberOfItems is 1
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "SingleTaskCell", for: indexPath) as! SingleTaskCollectionViewCell

cell.setUpViews()

return cell
}
}

CollectionViewCell 类

class SingleTaskCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var containerView: UIView!
@IBOutlet weak var label: UILabel!

func setUpViews() {
containerView.layer.cornerRadius = SIZE.CORNER_RADIUS_1
}
}

任务类别

class Task {
var id: Int!
var tasks: [String]
var date: Date?
var customer: Customer
var isFinished: Bool
var isAppointment: Bool

init(id: Int? = nil, tasks: [String], date: String? = nil, formattedDate: Date? = nil, customer: Customer, isFinished: Bool = false, isAppointment: Bool = false) {
if id != nil {
self.id = id
}
self.tasks = tasks
if formattedDate != nil {
self.date = formattedDate!
} else {
if date != nil {
let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
self.date = dateFormatterGet.date(from: date!)!
} else {
self.date = nil
}
}

self.customer = customer
self.isFinished = isFinished
self.isAppointment = isAppointment
}
}

最佳答案

编辑:我修好了。错误在于单元格的自动调整大小。因此,如果我只有 1 个单元格,它就不会显示在可见区域中,这就是为什么不调用 cellForItemAt 的原因。

我通过更改 Storyboard 中的一些设置并在 sizeForItemAt 方法中计算单元格的大小来修复此问题。

关于ios - 如果集合中只有 1 个元素,UICollectionView 不会进入 cellForItemAt 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58578435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com