iPhone - 选择了单元格移动到uitableview的顶部

时间:2011-03-18 14:49:47

标签: iphone uitableview custom-cell

嘿伙计们,我找了这个问题,我不相信我能找到答案。我有自定义单元格的表格视图,单击时,所选单元格会推送包含信息的新单元格。我想知道是否有人知道如何将所选单元格推到uitableview的顶部,或者让它填满整个tableview。

我的uitableview只占用屏幕的一半,我希望当选择单元格时它只占用屏幕的一半,并且用户仍然能够滚动单元格(如果这有意义)?

任何建议都会受到赞赏,有些难以描述我在寻找什么,所以如果有人需要澄清,请不要犹豫,问我。

谢谢!

4 个答案:

答案 0 :(得分:13)

在cellForRowAtIndexPath中,您需要在创建单元格后将其放入

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

这也为我提供了细胞自定义高度的技巧。

答案 1 :(得分:0)

在我的应用程序中,我有一堆单元格,在单击时会扩展为更大;并且一次只能扩展1个细胞。我基本上跟踪当前选择的indexPath,然后在heightForRowAtIndexPath中:检查这是否是选定的卖出;如果它是我返回更大的高度。

然后,在didSelectRowAtIndexPath中:我只设置当前的indexPath,并重新加载新单元格和前一单元格。这听起来与你正在寻找的相似......会起作用吗?

答案 2 :(得分:0)

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

在数据源的tableView:cellForRowAtIndexPath:方法中,您将确保为索引0返回所选单元格,并为所选单元格返回所有单元格的索引+ 1。

答案 3 :(得分: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被保存为止。当然,您还需要匹配数据源中的新订单。 (比如更改数据数组中的顺序)

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