【问题标题】:How can I delete a custom UITableViewCell without using commitEditingStyle?如何在不使用 commitEditingStyle 的情况下删除自定义 UITableViewCell?
【发布时间】:2011-09-27 18:20:26
【问题描述】:

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

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

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

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

[table beginUpdates];

//modify model code goes here

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

[table endUpdates];

[table reloadData];

所以上面的代码会更新模型,而不是视图。我可以看出模型正在更新,因为:

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

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

我想要 (B) 的结果,而不必离开屏幕。

我不想使用 commitEditingSyle,除非有办法在用户不知道他们正在编辑的情况下执行此操作。我当然不想要标准的删除按钮或滑动删除功能。

【问题讨论】:

    标签: ios uitableview cocoa-touch


    【解决方案1】:

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

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

    您的流程应如下所示:

    View loads/appears
       Load Data
       Load table
    
    Model Delete Action
       Delete Data
       (Re)Load Data
       Load table
    

    我不确定,但我想你忘记重新加载数据了。

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

    【讨论】:

    • 我试图弄清楚几个月前我是如何解决这个问题的。如果我记得,这很简单——我在错误的桌子上重新加载!
    • 我同意你的幻灯片标准,但是,客户不想要这个:(
    • 如果你重新加载了错误的表,我的假设是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2011-10-19
    相关资源
    最近更新 更多