繁体   English   中英

iPhone - 选择的单元格移动到 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM