更改后,从自定义单元格更新uitableview

时间:2010-05-22 18:43:28

标签: iphone uitableview

我已经从我的自定义UITableViewCell类实现了编辑菜单。我有一个小问题,从自定义表单元格类内部更新表视图。这样做的最佳方法是什么?

TIA

澄清:通过编辑菜单我的意思是标准的剪切/复制/粘贴...菜单,它符合标准的UIResponder协议。我想剪切/复制/粘贴单元格内容,这些内容驻留在某些数据结构(文件夹/文件树的种类)中。该单元实际上只反映数据。

菜单显示在点击&坚持表格细胞。该表派生自UITableViewController并在fly(不是来自xib)上创建。文件夹和文件夹允许剪切/复制操作。文件,而粘贴操作仅允许用于文件夹。实际上我只需要刷新文件夹单元格,它会显示里面的项目数量。

因此,在我的CustomCell粘贴选择器中,我执行以下操作:

- (void)paste:(id)sender {
  ... Perform a paste of data...
  MyTableViewController  *myTable = (MyTableViewController  *) delegate;
  [myTable performSelector:@selector(updateData) withObject:nil afterDelay:0.3];
}

在MyTableViewController中:

- (void) updateData
{
   [self.tableView reloadData];
}

问题是除了被更改的细胞之外的所有细胞都被重新绘制。我在cellForRowAtIndex函数中看到它。即使我添加了粘贴选择器[self setNeedsDisplay],它也无济于事。

此外,我的自定义单元格会覆盖setHighlighted函数:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
  if (delegate)
    [delegate copyableTableViewCell:self willHighlight:highlighted];
  [super setHighlighted:highlighted animated:animated];
}

所以委托(MyTableViewController)在那里显示一个编辑菜单。 问题是为什么改变的细胞不刷新?

由于

2 个答案:

答案 0 :(得分:0)

您想要更新单个单元格还是整个tableview?那些代表或选择者怎么样?

答案 1 :(得分:0)

解决。在MyTableViewController中调用:

- (void) updateData
{
   [self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.3];
}

它完成了工作......