我已经从我的自定义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)在那里显示一个编辑菜单。 问题是为什么改变的细胞不刷新?
由于
答案 0 :(得分:0)
您想要更新单个单元格还是整个tableview?那些代表或选择者怎么样?
答案 1 :(得分:0)
解决。在MyTableViewController中调用:
- (void) updateData
{
[self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.3];
}
它完成了工作......