现在我正在尝试动画所选单元格以移动到顶部,这意味着第一个位置有向上和向下滑动动画。
如果tableview有两个以上的项目,用户点击第二个或第三个项目,选定的单元格将移动到第一个位置,第一个到达第二个位置,第二个到达第三个位置。
我已经搜索并实现了一些示例,但我只移动了一个重复的单元格。
以下是我的代码,
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"didSelectRowAtIndexPath = %d",indexPath.row);
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationTop];
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationTop];
// update your dataSource as well.
[tableView endUpdates];
[coachInfoTableView reloadData];
}
如果你有任何人知道这个解决方案,请更新我。我真的很感激你。
答案 0 :(得分:1)
您必须在制作动画之前更新数据源,如果您只想移动单元格,请使用- (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath
而不是删除/插入单元格。
调用reloadData
将使您在没有任何动画的情况下重新加载表视图。
答案 1 :(得分:0)
您要查找的是要重新排序tableview单元格。
您可以使用两个重要的UITableView数据源协议方法来实现此目的:
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
有关教程和代码,请参阅HERE。 它将为您提供您提到的动画效果,无需担心cellForRowAtIndex委托方法。
好运!
答案 2 :(得分:-1)
似乎调用[coachIng TableView reloadData]是多余的。
[UITableView reloadData]从原始订单重新加载所有内容。