Похоже, вы реализуете табличное представление, как будто вы пишете цикл в стиле C с переменными 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
}