Iphone UITableVIew重新加载节:带动画:无障碍
我有一个UITableView,它有几个部分,部分的数量是动态的,也就是说,它们可以随时增加。在表视图中使用动画重新加载节,其中节的数量不是什么大问题。我把这个叫做:Iphone UITableVIew重新加载节:带动画:无障碍,iphone,objective-c,ios,uitableview,Iphone,Objective C,Ios,Uitableview,我有一个UITableView,它有几个部分,部分的数量是动态的,也就是说,它们可以随时增加。在表视图中使用动画重新加载节,其中节的数量不是什么大问题。我把这个叫做: [notesTableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic]; 然而,当节数发生变化时,让它工作起来是一件非常痛苦的事情。我总是遇到典型的断言错误“在重新加载之前
[notesTableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
然而,当节数发生变化时,让它工作起来是一件非常痛苦的事情。我总是遇到典型的断言错误“在重新加载之前,tableview中的节数必须与重新加载之后的节数相同..等等”
。我知道我应该使用[tableView insertSections…]
来解决这个问题,但在我的情况下,这样做可能会很困难
我的节数基于数组的大小。是否可以像调用[tableView reloadData]
一样自动重新加载带有动画的节,而不必担心手动插入行和节
(我知道一个便宜的解决方法是使用UIView动画或动画,但这并不能提供与使用动画方法重新加载节相同的效果。)我不知道这是否适用于动画,但它应该 在UItableView实现中,将
numberOfSections
方法更改为如下所示:
- (NSInteger)numberOfSections
{
return numberOfSections;
}
numberOfSections是一个在需要时更改的NSInteger
更改此号码后,请尝试拨打:
[tableView reloadData];
您的UITableView应该相应地更改
编辑:我在动画中使用它,但我不确定它是否适用于您的情况。它适用于我的编辑风格、插入和删除行以及我的内容的一般更新
当您需要更改UITableView内容时,请放置以下内容:
[tableView beginUpdates];
// Here change your contents
[tableView endUpdates];
使用
FetchedViewControllers
时,这是一个常见错误。出现该错误的原因是,您正在删除数据源中的对象,而tableView尝试加载tableView,并查看delegateMethods-这表明您的节比指定的节少
您有两个选择:
实现FetchedResultsController
委托方法并实现objectWillChange
(或)objectDidChange
方法,其内部表示
[[self tableView] reloadData];
// or
[[self tableView] endUpdates];
这应该可以解决问题
实施通知(当您删除不同ManagedObjectContext下的数据时),并在NSManagedObjectContextDidSave
(或)NSManagedObjectContextDidChange
时发布通知。然后,您必须添加一个观察者来将更改与通知合并。但我怀疑你的问题有这么严重。我认为选择(1)应该足够了
//创建NSMutableSet
[self.tableView开始更新];
如果(isAdd){
[self.tableView insertSections:insertIndexSet with RowAnimation:UITableViewRowAnimationBottom];
}
否则{
[self.tableView deleteSections:insertIndexSet with RowAnimation:UITableViewRowAnimationTop];
}
[self.tableView endUpdates]代码>您是否有可能使用核心数据?