我希望所选单元格始终位于tableView
的最顶端位置。
我可以通过:
[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
但我的问题是,例如,当单元格数量为3时。当我选择单元格编号3时,它就会停留在那里。那是正常的行为吗?如果是,那么,你可以提出一些建议,以便实现我的目标吗?谢谢!
答案 0 :(得分:4)
你可以使用tableview的contentInset
和setContentOffset
属性,例如
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat height = 44.0f;//cell height
tableView.contentInset = UIEdgeInsetsMake(0, 0, height * indexPath.row, 0);
//[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; //commenting u are setting it by using setContentOffset so dont use this
[tableView setContentOffset:CGPointMake(0, (indexPath.row * height) )animated:YES]; //set the selected cell to top
}
希望这有助于你......:)
答案 1 :(得分:2)
您可以在表视图的 didSelectRowAtIndexPath 委托中使用此代码
CGFloat height = 44.0f;//cell height
tableView.contentInset = UIEdgeInsetsMake(0, 0, height * indexPath.row, 0);
[tableView setContentOffset:CGPointMake(0, (indexPath.row * height) )animated:YES];
答案 2 :(得分:0)
您可以使用
设置UITableView
内容偏移量
[tableView setContentOffset:offsetPoint animated:YES];
或
[tableView setContentOffset:offsetPoint];
并通过
获取您选择的单元格位置 CGPoint offsetPoint = [tableView cellForRowAtIndexPath:indexPath].frame.origin
然后您可以将单元格移动到所需的偏移量,如下所示
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
float topOffset = 64; //in case of navigationbar
CGPoint offsetPoint = CGPointMake(0, cell.frame.origin.y - topOffset);
[tableView setContentOffset:offsetPoint animated:YES];
}
答案 3 :(得分:-2)
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { CGFloat高度= 44.0f; //细胞高度
tableView.contentInset = UIEdgeInsetsMake(0,0,height * indexPath.row,0); // [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; //注释你是通过使用setContentOffset设置它所以不要使用它 [tableView setContentOffset:CGPointMake(0,(indexPath.row * height))animated:YES]; //将所选单元格设置为顶部 }