NSIndexPath* updatedPath = [NSIndexPath indexPathForRow: 0 inSection: 0];
NSIndexPath* updatedPath2 = [NSIndexPath indexPathForRow: 1 inSection: 0];
NSArray* updatedPaths = [NSArray arrayWithObjects:updatedPath, updatedPath2, nil];
[self.mySexyTableView reloadRowsAtIndexPaths:updatedPaths withRowAnimation:UITableViewRowAnimationTop];
上面的代码可以正常运行。问题是我有很多数据,我不想硬编码行索引。由于我的表格中只有一个部分可以为0.如何动态生成NSIndexPath对象的NSArray?
或者是否有更简单的方法来为表格视图设置动画。当用户单击表视图顶部的选项卡时,表视图中的所有行都会更改。
答案 0 :(得分:7)
要生成索引路径数组,您可以循环:
NSMutableArray *updatedPaths = [NSMutableArray array];
for (NSNumber *row in someArray) {
NSIndexPath *updatedPath = [NSIndexPath indexPathForRow:[row intValue] inSection:0];
[updatedPaths addObject:updatedPath];
}
[self.mySexyTableView reloadRowsAtIndexPaths:updatedPaths withRowAnimation:UITableViewRowAnimationTop];
如果重新加载TableView中的所有数据,为什么不调用reloadData方法?
答案 1 :(得分:6)
如果您想刷新整个部分:
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationTop];
答案 2 :(得分:3)
如果您有多个indexPathForRow具有相等的行索引,则会出现此异常。
对于莫名其妙的
[segmentTable reloadRowsAtIndexPaths: [[NSArray alloc] initWithObjects:
[NSIndexPath indexPathForRow: 1 inSection: 1],
[NSIndexPath indexPathForRow: 1 inSection: 1], nil] withRowAnimation:UITableViewRowAnimationNone];
答案 3 :(得分:0)
我终于开始工作了。这是代码:
NSMutableArray *indexPaths = [[[NSMutableArray alloc] init] autorelease];
for (int i = 0; i < [mySexyList count]; i++) {
NSIndexPath *updatedPath = [NSIndexPath indexPathForRow:i inSection:0];
[indexPaths addObject:updatedPath];
}
[self.myFunkyTableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationTop];
问题是我从numberOfRowsInSection:方法返回硬编码值,该方法与mySexyList大小不同。这让应用程序崩溃了。
答案 4 :(得分:0)
假设self.arTableData
是一个可变数组的表&amp; tableView
是UITableView
的一个实例。假设tableView
中有10行(表示数组中有10个对象)。
我实现了以下代码来删除动画行。
int i; // to remove from 3 to 6
for(i=2;i<6;i++)
{
[self.arTableData removeObjectAtIndex:i];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:i inSection:0]] withRowAnimation:UITableViewRowAnimationRight];
}
这个技巧对我没有任何麻烦。希望它对你有用。祝你好运。
答案 5 :(得分:0)
只需将我的解决方案添加到混音中,因为一旦我找到它就很简单。发生的事情是我有一个表格,我的代码使用与cocoanetics.com
相同的技术“分组”。当用户执行需要更新单元格的操作,并且该表未在那时进行分组时,我的代码正在尝试使用
[[self tableView] reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationAutomatic];
指定单元格和不存在标头的路径。这导致了其他人报告的相同错误。我所要做的就是确保为reloadRowsAtIndexPaths提供的“路径”:withRowAnimation:实际存在。这样做,一切都很好。