mad*_*max 68 animation cocoa-touch objective-c uitableview
我怎样才能重新加载并动画一个单元格/行?现在我下载一些文件.每次文件下载完成后,我都会调用它完成的委托并调用[tableview reload].但随后整个表重新加载.我怎样才能为桌子设置动画,使其不会闪烁.例如褪色效果等等.
迎接马克斯
Jam*_*ord 186
使用以下UITableView实例方法:
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
Run Code Online (Sandbox Code Playgroud)
你必须指定NSArray的NSIndexPaths要重装.如果你只想重新加载.如果您只想重新加载一个单元格,那么您可以提供NSArray仅包含一个单元格的单元格NSIndexPath.例如:
NSIndexPath* rowToReload = [NSIndexPath indexPathForRow:3 inSection:0];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[myUITableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];
Run Code Online (Sandbox Code Playgroud)
您可以看到UITableViewRowAnimation枚举所有可能的动画行刷新动画的方法.如果您不想要任何动画,则可以使用该值UITableViewRowAnimationNone,如示例中所示.
重新加载特定行比仅仅获取您想要的动画效果更有优势.您还可以获得巨大的性能提升,因为只有您真正需要重新加载的单元才会刷新,重新定位和重新绘制数据.根据单元格的复杂程度,每次刷新单元格时都会产生相当大的开销,因此缩小所做的刷新量是必要的优化,应尽可能使用.
斯威夫特 4 & 5
对于 TableView
let index = IndexPath(row: 0, section: 0)
tableView.reloadRows(at: [index], with: .automatic)
Run Code Online (Sandbox Code Playgroud)
对于 CollectionView
let index = IndexPath(item: 2, section: 0)
collectionView.reloadItems(at: [index])
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您只需要更新 tableview 单元格中的文本..
UITableViewCell *cell = [_myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];
cell.textLabel.text = [NSString stringWithFormat:@"%i", (int)_targetMaxDistanceSlider.value];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75368 次 |
| 最近记录: |