如何解决崩溃:尝试使同一索引路径的多个单元出队,这是不允许的
我有tableview数据源func可以从工厂方法函数构建单元格。
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return OWTableViewOrganizer.instance.configureCell(at: indexPath)!
}
func configureCell(at indexPath: IndexPath) -> UITableViewCell? {
var cell = UITableViewCell()
switch indexPath.section {
case thisWorkoutSections.barbel.sectionNumber():
cell = barebellCell(indexPath: indexPath)
break
case thisWorkoutSections.lastWorkout.sectionNumber():
cell = lastWorkoutCell(indexPath: indexPath)
break
case thisWorkoutSections.personalRecord.sectionNumber():
cell = personalRecordCell(indexPath: indexPath)
break
case thisWorkoutSections.notes.sectionNumber():
break
default:
break
}
return cell
}
func lastWorkoutCell(indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: WorkoutSetTableViewCell.cellIdentifier(),for: indexPath) as! WorkoutSetTableViewCell
if OWTableViewOrganizer.instance.lastWorkoutExerciseSets.count > 0 {
if indexPath.row < OWTableViewOrganizer.instance.lastWorkoutExerciseSets.count {
let logExerciseSet = OWTableViewOrganizer.instance.lastWorkoutExerciseSets[indexPath.row]
let setNumber = indexPath.row + 1
if let weight = logExerciseSet.weight?.doubleValue,let reps = logExerciseSet.reps?.intValue {
cell.setupCellWithData(setNumber: setNumber,weight: weight,reps: reps)
}
} else {
cell.setupCellWithData(setNumber: -1,weight: 0,reps: 0)
}
} else {
cell.setupCellWithData(setNumber: -1,reps: 0)
}
return cell
}
但有时这行对我来说崩溃了
let cell = tableView.dequeueReusableCell(withIdentifier: WorkoutSetTableViewCell.cellIdentifier(),for: indexPath) as! WorkoutSetTableViewCell
有错误:
Attempted to dequeue multiple cells for the same index path,which is not allowed. If you really need to dequeue more cells than the table view is requesting,use the -dequeueReusableCellWithIdentifier: method (without an index path)
我知道代码样式和设计在这里并不理想,如果有评论,请跳过此部分。
我不知道要看哪里,我只是尝试删除indexPath,但它看起来无济于事或带来更多问题:
let cell = tableView.dequeueReusableCell(withIdentifier: WorkoutSetTableViewCell.cellIdentifier()) as! WorkoutSetTableViewCell
我有一个控制器,它的顶部显示了另一个控制器(就像Apple音乐一样),我可以向下滑动以显示底部控制器,而向上滑动以返回顶部控制器。我在日志中注意到我有一些演示警报,不确定是否需要解决上述问题,但不确定JFY信息。
解决方法
似乎有两个表视图触发器
tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath)
您只能从1个表视图中的单元格出队
let cell = tableView.dequeueReusableCell(withIdentifier: WorkoutSetTableViewCell.cellIdentifier(),for: indexPath) as! WorkoutSetTableViewCell
您应该尝试从{p>中传递tableView
tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath)
到
lastWorkoutCell(indexPath: IndexPath)
(将变为lastWorkoutCell(indexPath: IndexPath,tableView: UITableView)
)并从tableView
出队单元格
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。