这是一个简单的想法,但我似乎无法找到正确的解决方案。
我有一个包含许多部分的UITableView,包括标题视图。
我希望能够隐藏/删除我所拥有的部分中的每个tableview单元格,然后用一个漂亮的动画重新加载它们。
我的问题是部分的数量可能与以前不同,并且部分中的行数可能与以前不同...
我不能简单地淡出整个tableview,然后重新加载它,然后将其淡入,因为我需要标题视图始终可见并使用tableview滚动。
我需要删除它们,因为隐藏和显示将是一个带有活动指示器的漂亮“淡入淡出”动画。
答案 0 :(得分:0)
只需使用tableView方法
[self.tableView insertSections:(nonnull NSIndexSet *) withRowAnimation:(UITableViewRowAnimation)]
[self.tableView insertRowsAtIndexPaths:(nonnull NSArray<NSIndexPath *> *) withRowAnimation:(UITableViewRowAnimation)]
它们将允许您为新行/节的插入设置动画。对于删除,有类似的方法,除了它们被称为“deleteSections ...”和“deleteRowsAtIndexPaths ...”。
请注意,插入/删除后,这些tableView的委托函数将返回当前值:
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { }
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {}
“正确”表示:插入/删除前的部分/行数量,加上或减去插入/删除后的行数和部分数量。
答案 1 :(得分:0)
您可以使用:
self.tableView.reloadRows(at: [indexPath], with: .fade)
此处索引路径是您要重新加载的特定行。如果要更改行数,则必须更改数据源中的项目数。或者您可以更改numberOfRowsInSection返回的值
答案 2 :(得分:0)
对于链接动画,您可以使用
let pathsForNewCells = [indexPathOne, indexPathTwo, indexPathThree]
myTableView.beginUpdates()
myTableView.insertRows(at: pathsForNewCells, with: [UITableViewRowAnimation])
myTableView.endUpdates()
因此,根据documentation,高度将动画而不重新加载细胞。