【问题标题】:Deleting rows UItableview iphone using userdefaults使用userdefaults删除行UItableview iphone
【发布时间】:2011-08-08 19:08:27
【问题描述】:

我需要你的帮助,也许这很愚蠢,但我找不到错误。 我有一个表格视图和一个添加按钮,当它被点击时,我会显示一个带有小表单的模式视图,当按下保存按钮时,我将数据发送到TableView 控制器以显示它,我也在使用NSUserDefaults将此数据保存在数组中。

例如,当我添加 2 个新行并删除其中 1 个时,我的问题出现了,然后当我添加另一个时,它显示我删除的最后一行,而不是显示我刚刚添加的行。

我正在以这种方式进行保存和阅读:

viewDidAppear 中,我阅读了NSUserDefaults 并获取数据(如果存在)。 在从ModalView 中捕获数据的方法中,我保存到userdefaults。 在commitEditing 方法中,我读取了userdefaults,然后从数组和表中删除了该行,然后将此更改保存在userdefaults 中。

我不知道我做错了什么,有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: iphone nsuserdefaults delete-row


    【解决方案1】:

    在该类的viewWillAppear 中使用[self.tableView reloadData];。您还可以在另一个视图控制器中引用该类,为其创建一个对象并调用[classObject.tableView reloadData];

    始终记得在添加操作或删除操作后重新加载tableView

    【讨论】:

    • 我试着把 [self.tableView reloadData];在 viewWillApperar 但没有工作,当我返回并再次输入 tableview 控制器时,它必须与 reloadData cuz 相关,该行使用我保存的最后一行更新,我的意思是它显示一切都很好。我认为问题仅出现在我添加新行并且模式被解除的那一刻。 =S。顺便说一句,感谢您的快速回答 XD
    【解决方案2】:

    不要使用 NSUserDefaults 作为表的直接数据源。将其存储在中间模型中。这样调试会容易得多。

    如果您在保持模型与用户默认值同步时遇到问题,请在更改它们时致电 [[NSUserDefaults standardUserDefaults] synchronize]

    另外,请确保您在重复使用表格单元格时没有犯一些错误。如果您有一个客户 UITableViewCell 类并且您没有正确实现 -prepareForReuse,您可能会看到旧数据。

    【讨论】:

    • 嗨,大卫,感谢您的时间,我每次保存时都会调用同步方法,关于 -prepareForReuse 我没有听说过,所以我搜索了一下,发现它是一种方法重置自定义单元格的值,但我不知道必须重置哪些值以及何时调用此方法。你能告诉我更多关于这个吗??。
    • 它不是手动调用的,它会被 UITableViewCell 的子类覆盖。如果你没有使用任何自定义 UITableViewCell 子类,那么这不是问题。如果您需要更多帮助,您应该发布一些代码。
    猜你喜欢
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多