Я искал каждый ответ для этой попытки, все опции все равно не будут работать. У меня есть viewcontroller, где я удаляю запись из основных данных. Затем я удаляю viewcontroller из стека, чтобы вернуться к таблице. в таблице еще есть запись, которую я удалил в строке! Я использовал каждую комбинацию, которую могу придумать tableView.reloadData()
в viewDidAppear
, а также viewDidLoad
. Ничто не перезагружает данные! Если я вернусь к предыдущему виду таблицы, данные верны, и я перейду вперед, данные исчезнут, как и должно быть. У меня заканчиваются варианты Пожалуйста, помогите.
import UIKit
class showWeekTableViewController: UITableViewController {
var dailyEntry = [DailyEntry]()
var week = Date()
var weekArray = [Date]()
var firstDay = Date()
var hour = Double()
var hoursArray = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
@IBOutlet var weeksTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
selectedWeekArray()
getDailyEntries()
getHoursArray()
tableView.reloadData()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
selectedWeekArray()
getDailyEntries()
print("viewwillappear")
getHoursArray()
weeksTableView.reloadData()
}
// MARK: - Table view data source
/*
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
*/
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 7
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .short
dateFormatter.dateFormat = "E-MM-dd-yyyy"
let firstDay = dateFormatter.string(from: weekArray[indexPath.row])
let tempHour = hoursArray[indexPath.row]
// Configure the cell...
if tempHour == 0.0 {
cell.textLabel?.alpha = 0.50
cell.isUserInteractionEnabled = false
}
cell.textLabel?.text = ("\(firstDay) \(tempHour)")
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedDay = weekArray[indexPath.row]
performSegue(withIdentifier: "moveToShowSelectedDay", sender: selectedDay)
print("first")
print(selectedDay)
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
func selectedWeekArray() {
var tempWeek = week
for _ in 0...6 {
weekArray.append(tempWeek)
tempWeek = tempWeek + (86400)
}
}
func getDailyEntries() {
if let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext{
if let dailyEntries = try?
context.fetch(DailyEntry.fetchRequest()) {
if var tempDailyEntries = dailyEntries as? [DailyEntry] {
tempDailyEntries.sort(by: { $0.date!.compare($1.date!) == .orderedAscending})
dailyEntry = tempDailyEntries
tableView.reloadData()
}
}
}
}
func getHoursArray() {
// load hours for each day in the week
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .short
dateFormatter.dateFormat = "MM-dd-yyyy"
for x in 0...6 {
for z in 0...dailyEntry.count-1 {
if dateFormatter.string(from: weekArray[x]) == dateFormatter.string(from: dailyEntry[z].date!) {
let tempHours = Double(dailyEntry[z].hours!)!
hoursArray[x] = tempHours
}
}
}
tableView.reloadData()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let dayVC = segue.destination as? showSelectedDayViewController {
if let selectedDay = sender as! Date? {
dayVC.selectedDay = selectedDay
}
}
}
}