我的uitableview只占用屏幕的一半,我希望当选择单元格时它只占用屏幕的一半,并且用户仍然能够滚动单元格(如果这有意义)?
任何建议都会受到赞赏,有些难以描述我在寻找什么,所以如果有人需要澄清,请不要犹豫,问我。
谢谢!
答案 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被保存为止。当然,您还需要匹配数据源中的新订单。 (比如更改数据数组中的顺序)
此外,您可能希望在执行此操作时将表格滚动到顶部。