Я использую Базовые Данные для хранения входных данных от первого VC. Во втором VC я добавил tableView, показывающий все данные, введенные пользователем, и он работает хорошо. В этом же VC у меня есть кнопка «Удалить все данные», которая эффективно удаляет мою полную базу данных Core Data и добавляет -> tableView.reloadData () в действие моей кнопки после удаления всех моих объектов. Мой tableView не обновляется правильно, даже переходя назад и вперед между обоими VC. В ViewDidLoad я также добавил tableView.reloadData (), но ничего не меняется. Обновление tableView работает в одном уникальном случае, если я закрываю свое приложение и перезапускаю его. Любая подсказка о том, что я пропустил?
import UIKit
import CoreData
class DisplayViewController: UIViewController, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var deleteDay: UIButton!
@IBOutlet weak var deleteAll: UIButton!
var dateOfInputs = [DateOfInputs]()
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.tableView.reloadData()
}
@IBAction func deleteAllDatabase(_ sender: Any) {
//getting context from your Core Data Manager Class
if DateOfInputs.clearAll() {
dateOfInputs = DateOfInputs.fetchObject()!
print ("Clear All")
}
try? AppDelegate.viewContext.save()
tableView.reloadData()
}
var datas = DateOfInputs.all
var dateStringArray : [String] = []
override func viewDidLoad() {
super.viewDidLoad()
deleteDay.layer.borderColor = UIColor.white.cgColor
deleteDay.layer.borderWidth = 3
deleteAll.layer.borderColor = UIColor.white.cgColor
deleteAll.layer.borderWidth = 3
// navigationItem.title = "My Own Data"
// navigationController?.navigationBar.prefersLargeTitles = true
datas = DateOfInputs.all
tableView.reloadData()
}
}
extension DisplayViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return datas.count // one row for the input levels and one for comment
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! DisplayVCTableviewCell
let data = datas[indexPath.row]
// converting my dates to strings
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .long
dateFormatter.dateFormat = "dd MMMM, yyyy"
let newDate = dateFormatter.string(from: data.date!)
cell.myDate.text = (newDate)
cell.myValues.text = " Sleep: \(data.sleepVal) Stom.: \(data.stomachVal) En.: \(data.energyVal)"
cell.myComment.text = (data.comment)
return cell
}
}