swift - 如何根据不同的条件在单个表格视图中以不同的方式使用相同的自定义单元格?
问题描述
我有一个表格视图和一个自定义单元格。我有 3 个用户在上一个屏幕中选择的条件(成人、儿童和婴儿的数量)。
我如何根据成人、儿童和婴儿的数量在表格视图中显示自定义单元格。(假设用户选择 1 名成人、2 名儿童和 3 名婴儿)细胞计数工作正常。我得到的细胞总数符合预期。
我尝试使用类似的东西
我在 tableviewcontroller 中声明了 3 个变量 adultcounttb 、 childcounttb 、 infantcounttb 。
我从上一个屏幕获得了成人计数、儿童计数和婴儿计数
if(adultcounttb < adultcount )
{
let cell = (declaring)
cell.titlelabel.text = "adult"
adultcounttb += 1
return cell
}
else if (childcounttb < childcountt)
{
let cell = (declaring)
cell.titlelabel.text = "child"
childcounttb += 1
return cell
}
else if .....
}
else
{
return UITableviewcell()
}
This works as intended but whenever i scroll , the cells just disappears and becomes blank ( i know its because the else part is getting called) . How can i fix it so that the cells dont disappear or go blank when tableview gets scrolled?
解决方案
您似乎正在实现一个表格视图,就好像您正在编写一个 C 风格的 for 循环,XXXcounttb
变量作为计数器。你不应该这样做。
在该cellForRowAtIndexPath
方法中,您将获得一个indexPath
并且您应该返回一个应该位于该索引路径的单元格。您的代码甚至不关心索引路径。这是一个很大的指标,表明你做错了什么。
事实上,您可以通过查看给定的索引路径和XXXcount
从前一个 VC 传递的变量来计算应该返回哪个单元格。你根本不需要XXXcounttb
变量。
假设您在一个部分中显示所有单元格,您可以这样做:
if indexPath.row < adultCount {
// return an adult cell
} else if indexPath.row < adultCount + childCount {
// return a child cell
} else {
// return an infant cell
}
如果您在不同的部分显示每种类型的单元格,那就更容易了:
if indexPath.section == 0 {
// return an adult cell
} else if indexPath.section == 1 {
// return a child cell
} else {
// return an infant cell
}
推荐阅读
- javascript - JavaScript find() 方法搜索对象数组以查找元素,结果不可访问
- python - 列中的百分比值
- firebase - Unity 从我在 Mac OS 上的资产文件夹中删除文件本身
- c++ - 您如何将结构作为类中的私有成员并为其创建参数化的构造函数/设置器函数?
- yaml - 第 10 行的 yaml 语法有错误
- javascript - 未处理的拒绝 (TypeError):state.cartItems 未定义
- mysql - 在 SQL 中使用 AND 和括号分组不起作用
- python - 在这种情况下如何滚动带有背景的元素?
- python - 如何使用 for 循环创建许多无线电输入?
- flutter - Flutter/Dart中这种选择叫什么名字?