Я пытаюсь обновить текст метки tableViewCell с помощью вычисляемого свойства. Когда я создаю ячейку, метка обновляется соответствующим образом, однако, когда я пытаюсь обновить ее от делегата, она не меняется. Странно то, что оператор печати, немедленно выполняющий его (и внутри cellForRowAt), обновляется правильно.
var globalTime : String = "12:00 PM"
struct Task {
var taskType: String
var taskInstructions: String
var taskDurationTime: Int
var taskStartTime: String {
return calculateTimeInternal(from: globalTime, taskDuration: taskDurationTime)!
}
func calculateTimeInternal(from endTime: String, taskDuration: Int) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm a"
let calendar = Calendar.current
let dateComponents = DateComponents(calendar: calendar, minute: -taskDuration)
if let time = dateFormatter.date(from: endTime),
let startTime = calendar.date(byAdding: dateComponents, to: time, wrappingComponents: false) {
return dateFormatter.string(from: startTime)
}
return nil
}
}
extension ViewController : TimeChangedDelegate {
func timerChanged(time: String) {
globalTime = time
myTableView.reloadData()
}
}
//Inside myTableView cellForRowAt...
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath)
as! myTableViewCell
print("taskStartTime is \(meal.arrayOfTasks[indexPath.row].taskStartTime)") //Updates correctly
cell.planTime.text = "\(meal.arrayOfTasks[indexPath.row].taskStartTime)" //Updates wrong
cell.planLabel.text = "\(meal.arrayOfTasks[indexPath.row].taskStartTime)"
return UITableViewCell()
}
Оператор печати обновляется точно, однако cell.planTime.text не изменяется. Почему они будут разными? Спасибо!