如何在不使用commitEditingStyle的情况下删除自定义UITableViewCell?

时间:2011-09-27 18:20:27

标签: ios uitableview cocoa-touch

我有一个自定义的UITableViewCell,它始终有一个删除按钮。

按下删除按钮时,当前设计是使用是/否闪烁确认删除的警报。

到目前为止,所有这些都有效。

问题是,实际按“是”不会更新UITableView。它将从模型中删除数据,但该行仍然存在。

[table beginUpdates];

//modify model code goes here

[table deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];

[table endUpdates];

[table reloadData];

因此上面的代码将更新模型,但不会更新视图。我可以说模型正在更新,因为:

(A)再次尝试删除同一个单元格会导致崩溃

(B)移动到另一个屏幕并返回导致单元格被删除

我希望(B)的结果不必离开屏幕。

我不想使用commitEditingSyle,除非有用户知道他们正在编辑的方法。我当然不希望标准删除按钮或滑动删除功能。

1 个答案:

答案 0 :(得分:1)

据我了解,您删除了您的模型 在情况B中,视图将再次出现,重新加载数据并构建UITableView。

当您移除模型时,是否将其从集合中删除?
我想不是。您的应用程序将使用相同的数据重建视图(重新加载数据时不会从内存中删除模型)。

您的流程应如下:

View loads/appears
   Load Data
   Load table

Model Delete Action
   Delete Data
   (Re)Load Data
   Load table

我不确定,但我认为您忘了重新加载数据。

另一个提示:
您应该使用幻灯片删除。 这是人机界面指南(HIG)中定义的标准