Я пытаюсь скруглить углы первой и последней ячеек таблицы, но у меня возникла проблема. При прокрутке моя последняя повторно используемая ячейка tableView возвращает неправильный indexPath.row. Таким образом, он идет от 0 до 9, так как у меня есть массив с 10 элементами, затем с 6 по 9, затем с 3 по 4. Я пришел к выводу, что это происходит потому, что ячейки используются повторно, но это происходит только при прокрутке. При нажатии на ячейку возвращается правильный indexPath.row, как и ожидалось.
Я пробовал некоторые решения, такие как:
- Явно возвращает количество ячеек (которое равно 10).
- Явно проверяю и раздел, но в этом нет необходимости, поскольку у меня всегда есть только один раздел.
- Обнаружение последней ячейки с помощью "indexPath.row == array.count -1" или "indexPath.row == array.count".
Ни одна из этих работ, особенно последняя. Я ставлю точку останова для проверки на indexPath.row, когда отображается последняя ячейка, и она возвращает «3», а не 9, что я и ожидаю (так как у меня 10 ячеек).
Возвращаемое количество ячеек:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
guard let resultsCount = results?.count else { return 0 }
return resultsCount
}
Настройка ячеек:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let customTableViewCell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) as! CustomTableViewCell
// Setup stuff
...
if indexPath.row == 0 { // if first cell
// Do something
...
} else if indexPath.row == results!.count - 1 { // if last cell
// Do something
...
} else {
// Do something
...
}
return searchResultsCell
}
Также пробовал с этим вместо того, чтобы делать это в cellForRowAt:
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
Изображение для иллюстрации
Есть ли другой способ получить реальный indexPath.row последней ячейки при прокрутке, чтобы я мог закруглить ее нижние углы?