Я знаю, что этот вопрос старый, но я нашел проблему с решением, если вы удалите одно подпредставление из одной ячейки прототипа, это представление будет удалено из всех повторно используемых ячеек, в следующей ячейке будет создан нулевой указатель, которыйбудет использоваться повторно.
Если вы создадите подкласс UITableViewCell и удалите оттуда подпредставление, сначала вам нужно будет выполнить эту проверку:
if (mySubView != nil ) {
mySubView.removeFromSuperview()
}
Это также будет работать внутри вашего cellForRow в методе indexPath
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyCustomCell
if (cell.mySubView != nil) {
cell.mySubView.removeFromSuperview()
}
return cell
}
Таким образом, вы избегаете нулевого указателя, код для быстрого 3. Надеюсь, это кому-нибудь поможет.:)