gpt4 book ai didi

iphone - UITableVIew reloadSections :withAnimation:withoutHassle

转载 作者:行者123 更新时间:2023-11-28 17:55:20 25 4
gpt4 key购买 nike

我有一个包含多个部分的 UITableView,部分的数量是动态的,也就是说,它们可以随时增加。在 TableView 上重新加载带有动画的部分,其中部分的数量没什么大不了的。我只是这样称呼:

[notesTableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];

然而,当部分的数量发生变化时让这个工作起来是一件很痛苦的事情。我总是遇到典型的断言错误 “重新加载之前您的 tableview 中的部分数必须与重新加载之后相同......等等”。我知道我应该使用 [tableView insertSections...] 来摆脱这个,但在我的情况下这样做可能很困难。

我的节数基于数组的大小。无论如何,是否可以自动重新加载带有动画的部分,就像调用 [tableView reloadData] 一样简单,而不必担心手动插入行和部分?

(我知道一种廉价的解决方法是使用 UIView 动画或 CAAnimation,但这并不能提供与 reloadSections withAnimation 方法相同的效果。)

最佳答案

当您使用 FetchedViewControllers 时,这是一个常见的错误。您收到该错误的原因是因为您正在删除 dataSource 中的对象,并且 tableView 尝试加载 tableView,并查看 delegateMethods - 它表明您的部分较少指定的。

你有两个选择:

  1. 实现 FetchedResultsController 委托(delegate)方法并实现 objectWillChange(或)objectDidChange 方法,并在其中说类似的内容

    [[self tableView] reloadData]; 

    // or

    [[self tableView] endUpdates];

    这应该可以解决问题。

  2. 实现通知(当您删除不同 managedObjectContext 下的数据时),并在 NSManagedObjectContextDidSave(或)NSManagedObjectContextDidChange 时发布通知。然后您将必须添加一个观察者以将更改与通知合并。但我怀疑你的问题有这么严重。我会说选项 (1) 应该足够了。

关于iphone - UITableVIew reloadSections :withAnimation:withoutHassle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com