我在小部件中有一个UITableView
,我希望用动画重新加载它。 [self.tableView reloadData]
效果很好,但重新加载不是动画。我知道我应该使用reloadSections:withRowAnimation:
进行动画制作,但是存在问题。
该表确实正在更新,numberOfRowsInSection:
返回新值,但在视觉上看到的行数仍然相同。
例如:如果我有一个UITableView
有2行而我想将其更新为4行,那么表格中仍会有2行。这两个单元格中的内容将按预期更新,但应该有4个单元格。我知道numberOfRowsInSection:
会返回4。
调用[self.tableView reloadData]
而不是reloadSections:withRowAnimation:
我找到的解决方法就是这个简短的片段:
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView reloadData];
一个接一个地调用这两个方法,用动画和4个单元重新加载表。我假设这是一个iOS 8错误,也许是因为我在一个小部件中使用tableView?
答案 0 :(得分:3)
我知道这是一个老问题,但为了参考。 reloadSections: withRowAnimation:
仅重新加载当前可见的单元格。您应该使用insertRowsAtIndexPaths: withRowAnimation:
添加您想要的另外两行。
docs对这些信息似乎有点稀疏(含糊不清?),但他们确实说:
调用此方法会导致表视图向其数据源询问指定节的新单元格。
没有明确说明它会要求新的行数,正如您在遇到的行为中所看到的那样,这恰好是真的。