Ios 单元格’;UITableView数据源中的标签不更新

Ios 单元格’;UITableView数据源中的标签不更新,ios,uitableview,swift,Ios,Uitableview,Swift,当我的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

当我的
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)
    })
}
我的数据源使用以下代码:

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
本身不会更新。我正在调用主队列上的
reloadinexpaths:
方法以确保安全,但它仍然不起作用。

我要做的第一件事是删除
dispatch\u async
,看看这是否是线程问题。我不明白您为什么需要它,因为table update数据源回调应该与调用线程异步。

由于
detailTextLabel
为零,您将无法设置文本。这意味着返回的单元格没有该标签。如果您使用的是
UITableViewCell
原型,那么代码中返回的单元格可能与在故事板中创建的单元格不同


确保单元格原型上设置的标识符与
self.tableView registerClass:
方法中的标识符匹配。

我尝试过使用或不使用,但都没有成功。它存在的唯一原因是确保在主线程上发生UIKit更改(因为它不是线程安全的)detailTextLabel是否有值,是否为非nil?是否已在单元格中为此UILabel设置IBOutlet?detailTextLabel为零。我正在使用一个正确的细节uitableviewcell。我应该指出,初始值被设置,但是在更新我的模型并重新加载相应的行之后-它不会显示更改。如果它是nil,那么你就不能在它上面设置文本值。是的,但它不应该是nil。这是一个右细节uitableviewcell,具有非零细节文本标签。您如何创建右细节uitableviewcell?你在哪里注册?您使用的是原型单元还是子类?