iPhone - 选择单元格后如何将其移动到uitableview的顶部

6
我搜索了这个问题,但我不认为我能找到答案。我有一个自定义单元格的表格视图,当单元格被点击时,所选单元格推出一个带有信息的新单元格。我想知道是否有人有关于如何将所选单元格推到uitableview的顶部,或使其填满整个uitableview的想法。
我的uitableview只占屏幕的一半,当选择单元格时,我希望它只占据那一半屏幕,并且用户仍然能够滚动单元格(如果这有意义的话)?
任何建议都将不胜感激,描述我正在寻找的内容有些困难,因此如果有人需要澄清,请不要犹豫问我。
4个回答

14

在cellForRowAtIndexPath中,你需要在创建cell之后将这个放置进去。

    [tableView scrollToRowAtIndexPath:selectedCellIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

对我来说,这也解决了单元格自定义高度的问题。


0
如果您想要移动单元格,这是一个可以开始的基础。
-(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的情况移动行。当然,您还需要在数据源中匹配新顺序(例如更改数据数组中的顺序)。

此外,您可能希望在执行此操作时将表格滚动到顶部。


当取消选择单元格时,我该如何将其移回原来的位置? - Alex Muller

0
在我的应用程序中,我有一堆单元格,当单击时会扩展为更大的单元格;并且一次只能扩展1个单元格。我基本上跟踪当前选定的indexPath,然后在heightForRowAtIndexPath:中检查是否为所选单元格;如果是,则返回较大的高度。
然后,在didSelectRowAtIndexPath:中,我只需设置当前indexPath,并重新加载新单元格和先前的单元格。这听起来与您要寻找的类似...这样可以吗?

0

要将选定的单元格移动到表视图的顶部,您可以在didSelectRowAtIndexPath中将选定的单元格索引存储在实例变量中,然后调用[tableView reloadData]。

在数据源的tableView:cellForRowAtIndexPath:方法中,您需要确保选定的单元格返回索引0,而所有先于选定单元格的单元格都返回其索引+1。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接