在项目明细显示屏幕上处理取消编辑的标准方法是什么?

时间:2012-01-14 22:52:29

标签: iphone objective-c nsundomanager

我目前正在研究一种能够记录猫及其相关芝士汉堡的应用程序。我正在使用Core Data支持该应用程序。猫与其芝士汉堡之间存在一对多的关系(允许猫只有零个或多个芝士汉堡)。

我有一个UITableViewController,它按名称(姓氏,名字)显示所有猫。单击表中的行时,会将新的UITableViewController推送到导航控制器上,该控制器显示有关cat的所有信息。为了它的价值,表格视图与第一个包含有关猫的信息(名/姓,颜色等)的第一个分组。然后在第二部分中,描述了猫所有的奶酪汉堡。

右侧导航项是编辑按钮。当用户处于编辑模式时,我隐藏了导航栏的后退按钮,将其替换为取消按钮。

我的问题是:是否有关于如何处理编辑屏幕中数据的标准/通用实践/等?我发现它有两种发生方式:

  1. 跟踪用户更改的所有内容,然后当他们点击done按钮时,将这些更改复制到Cat NSManagedObject
  2. 使用与NSUndoManager关联的NSManagedObjectContext,当用户开始编辑时,创建新的撤消分组。当他们点击取消按钮时,只需结束分组,然后在NSUndoManager上执行撤消。
  3. 我觉得选项2似乎最实用,但我对此感到复杂。对于iPhone,NSManagedObjectContext默认情况下没有NSUndoManager与之关联 - 我已经读过它对于OSX应用程序。我也没有看到很多关于在网上阅读时使用NSManagedObjectContext与iPhone编程相关的讨论。这让我觉得人们可能正在使用我没有想过的另一种方法。

1 个答案:

答案 0 :(得分:1)

更常见的iPhone应用程序工作流程是根本没有“取消”按钮。大多数应用只是将“编辑”按钮变形为“完成”按钮。只有在可能丢失的信息难以复制时才考虑取消。

但是,如果你想要一个取消按钮,第一个选项似乎更精简。在完成时应用已更改。在任何其他情况下,只需丢弃暂时性更改数据。后者不仅取消取消,而且如果应用程序必须终止。仅接受显式完成的更改。