当我的UIDatePicker
更新时,我称之为此方法:
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))"
}
}
断点告诉我代码全部按预期运行,并且所有变量都按预期更改,但是detailTextLabel
本身不会更新。我在主队列上调用reloadIndexPaths:
方法是安全的,但它仍然不起作用。
答案 0 :(得分:0)
我要做的第一件事就是移除dispatch_async
以查看它是否是线程问题。我不知道你为什么还需要它,因为表更新数据源回调应该与调用线程异步。
答案 1 :(得分:0)
看作detailTextLabel
为零,您将无法设置文本。所以这意味着返回的单元格没有该标签。您可能无法在代码中返回与在Storyboards中创建的相同的单元格 - 假设您使用的是UITableViewCell
原型。
确保您的单元格原型上设置的标识符与self.tableView registerClass:
方法中的标识符匹配。