Это строки таблицы, которые представляют данные в tempArray
, поэтому индекс должен быть indexPath.row
.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ClaimCell", for: indexPath) as! AllMyClaimsTable
cell.idField.text = String(tempArray[indexPath.row].id)
cell.dateField.text = tempArray[indexPath.row].date
cell.statusField.text = tempArray[indexPath.row].status
return cell
}
Редактировать: Кроме того, добавьте наблюдатель свойства didSet
, который перезагрузит представление таблицы автоматически при изменении вашего массива. Хотя это должен быть временный обходной путь, чтобы проиллюстрировать смысл и облегчить отладку кода. Вызов tableView.reloadData()
для каждой отдельной вставки или удаления очень неэффективен.
var tempArray: [ClaimProperties] = [] {
didSet {
print("didSet...")
print(tempArray)
tableView.reloadData()
}
}
И если вы теперь добавите журнал печати внутри cellForRowAt
, это должно доказать, что значения tempArray устанавливаются и сохраняются по вашему желанию. .
print("In cellForRowAt...")
print(tempArray)
Объяснение:
Причина, по которой print(tempArray)
не печатает обновленные значения где-либо еще, заключается в том, что методы dataView источника tableView вызываются только один раз, когда сначала появится tableView. Они вызываются снова, только когда вы специально вызываете метод reloadData
. Если вы добавите код didSet
, он должен будет перезагружаться каждый раз, когда вы добавляете в ваш массив, и тогда cellForRowAt
будет снова вызываться в тот момент, когда ваше закрытие завершится, что выведет обновлено (не пусто) tempArray
.
Если таблица все еще не отображается после вышеуказанных исправлений, то я могу с уверенностью сказать, что проблема заключается в другом месте.