未选择单元格时设置UITableViewCell的文本

时间:2011-09-03 04:19:33

标签: ios uitableview

我有一个正在实例化的UITableViewCell(在“cellForRowAtIndexPath”方法中)

[cell setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton];

当点击“附件按钮”时,我会弹出一个UIDatePicker,它应该将单元格的文本设置为所选的日期。拾取器显示并且我的单元格不是零,但是,在我单击它之前我看不到单元格的实际文本(日期)(单元格,而不是“附件按钮”)。

以下是设置文字的代码:

targetCell.textLabel.text = [formatter stringFromDate:_datePicker.date];

targetCell是在调用方法:“accessoryButtonTappedForRowWithIndexPath”时设置的实例变量。

就像我说的那样,我知道正在单元格中设置文本,因为当我单击实际单元格时,我可以看到选择器中选择的日期。

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试直接修改当前显示的表格视图单元格。即使您设法以这种方式更改它,这仍然无法工作,因为当您的行滚出视图时,其相应的单元格将重新用于另一行。因此,您的更改将会丢失,或者您将显示错误的内容。

正确的管理方法是:

  1. 从日期选择器中选择值时,更改数据源,而不是单元格
  2. 通过重新加载重新加载单元格的视图
    • 使用-[UITableView reloadData]
    • 的整个表格视图
    • 使用-[UITableView reloadRowsAtIndexPaths:withRowAnimation:]
    • 的那一行
  3. 使用这些方法之一将导致调用表视图数据源-tableView:cellForRowAtIndexPath:,这将使用新单元格更新行。因此,即使该行滚出视图,也会显示该行的正确日期。