![](/img/trans.png)
[英]In iOS, selected cell should move to top portion without any disturbance in UITableView
[英]iPhone - having selected cell move to top of uitableview
我寻找了这个问题,但我不相信我能找到答案。 我有一个自定义单元格的表格视图,单击时,选定的单元格会推送一个包含信息的新单元格。 我想知道是否有人知道如何将选定的单元格推到 uitableview 的顶部,或者让它填满整个 tableview。
我的 uitableview 只占据屏幕的一半,我希望在选择单元格时它只占据屏幕的那一半,并且用户仍然能够滚动单元格(如果有意义的话)?
任何建议将不胜感激,描述我在寻找什么有点困难,所以如果有人需要澄清,请不要犹豫问我。
在 cellForRowAtIndexPath 中,您需要在创建单元格后将其放入
[tableView scrollToRowAtIndexPath:selectedCellIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
这也为我提供了自定义单元格高度的技巧。
在我的应用程序中,我有一堆单元格,单击时会放大; 并且一次只能扩展 1 个单元格。 我基本上是跟踪当前选中的indexPath,然后在heightForRowAtIndexPath中:查看这个是不是选中的sell; 如果是我返回一个更大的高度。
然后,在 didSelectRowAtIndexPath: 中,我只是设置了当前的 indexPath,然后重新加载新单元格和前一个单元格。 这听起来与您要查找的内容相似……那行得通吗?
要将所选单元格移动到 tableview 的顶部,您可以将所选单元格的索引存储在 didSelectRowAtIndexPath 的实例变量中,然后调用 [tableView reloadData]。
在数据源的 tableView:cellForRowAtIndexPath: 方法中,您将确保为索引 0 返回所选单元格,并为其索引 + 1 返回所选单元格之前的所有单元格。
如果您想移动单元格,这是您可以开始的基础。
-(void)moveIndexPathToTop:(NSIndexPath *)pathToMove
{
[myTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:pathToMove] withRowAnimation:UITableViewRowAnimationFade];
NSIndexPath *firstRow = [NSIndexPath indexPathForRow:0 inSection:0];
[myTable insertRowsAtIndexPaths:[NSArray arrayWithObject:firstRow] withRowAnimation:UITableViewRowAnimationFade];
}
这会将行移动到 UITableView 被考虑的位置。 当然,您还需要匹配数据源中的新订单。 (例如更改数据数组中的顺序)
此外,您可能希望在执行此操作时将表格滚动到顶部。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.