Текст UITableView не обновляется из вычисляемого свойства - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь обновить текст метки 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 не изменяется. Почему они будут разными? Спасибо!

...