Когда мои UIDatePicker
обновления, я называю этот метод:Ячейки не обновляется в источнике данных UITableView
func didUpdateDatePicker(datePicker: UIDatePicker)
{
birthdayDictionary.setObject(datePicker.date, forKey: EVENT_TYPE_BIRTHDAY_KEY_DATE_OF_BIRTH)
dispatch_async(dispatch_get_main_queue(), {() -> Void in
let indexPath = NSIndexPath(forRow: TableViewRows.Date, inSection: 0)
self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .None)
})
}
И мой DataSource использует этот код:
if indexPath.row == TableViewRows.Date
{
// Date description
//
let cell = tableView.dequeueReusableCellWithIdentifier(TableViewCellIdentifiers.Date, forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = "Birthday"
cell.detailTextLabel?.text = " "
if let date = birthdayDictionary.objectForKey(EVENT_TYPE_BIRTHDAY_KEY_DATE_OF_BIRTH) as NSDate?
{
cell.detailTextLabel?.text = "\(formatter.stringFromDate(date))"
}
}
Breakpoints сказать мне, что код все выполняется, как ожидалось, и все переменные изменяются, как ожидалось, однако сам detailTextLabel
не обновляется. Я вызываю метод reloadIndexPaths:
в главной очереди, чтобы быть в безопасности, но он все равно не работает.
Имеет ли значение detailTextLabel значение, не ноль? Вы установили IBOutlet для этой UILabel в своей ячейке? – Tim
detailTextLabel - это нуль. Я использую правильную деталь uitableviewcell. Я должен указать, что начальное значение будет установлено, но после обновления моей модели и перезагрузки соответствующей строки - она не отображает изменение –
Если оно равно нулю, вы не можете установить для него текстовое значение. – Tim