Один из возможных способов ...
Поддерживать массив объектов, содержащих данные для каждой строки, я назову его dataArray
, чтобы каждый объект в массиве содержал информация, необходимая для заполнения каждой соответствующей строки. Затем в вашей функции cellForRowAt
после удаления ячейки из очереди, как вы уже реализовали, сделайте что-то вроде этого:
if indexPath.row == 0 {
cell.descriptionName?.text = "PM 2.5"
cell.valueNumber?.text = "\(pm25Data)"
// Other setup unique to the first cell
} else {
cell.descriptionName?.text = dataArray[indexPath.item - 1].description
cell.valueNumber?.text = dataArray[indexPath.item - 1].description
// Other setup unique to all following cells
}
Кроме того, реализуйте свой numberOfRowsInSection
с одной строкой, просто return dataArray.count
Затем, когда ваш dataArray
заполнится объектами, содержащими данные, вызовите self.tableView.reloadData()
В более широком, но все же упрощенном смысле:
Каждый когда вы вызываете reloadData()
, происходит несколько вещей:
- TableView вызовет свою
numberOfRowsInSection
функцию - TableView будет вызывать свою
cellForRowAt
функцию несколько раз. возвращается из numberOfRowsInSection
и настраивает каждую строку индивидуально - TableView будет вызывать другие функции, такие как
heightForRowAt
, по мере необходимости для настройки каждой строки
Некоторые вещи, которые нужно сохранить в уме:
- Вызов
reloadData()
каждый раз, когда вы хотите обновить sh tableView (например, с новыми данными) - Вы действительно не устанавливаете настраивая каждую ячейку индивидуально, вы настраиваете logi c для заполнения ячеек извлеченными данными из детализированного источника (обычно массива)
- Все, что вам нужно сделать, это сохранить
dataArray
, а затем вызывать reloadData()
каждый раз, когда вы хотите обновить sh tableView. Функция cellForRowAt
обрабатывает заполнение каждой ячейки данными.
Полезное руководство:
https://www.youtube.com/watch?reload=9&v=VFtsSEYDNRU