选择单元格时,将UITableViewCell置于顶部

时间:2014-03-19 05:44:18

标签: ios objective-c uitableview

我希望所选单元格始终位于tableView的最顶端位置。 我可以通过:

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

但我的问题是,例如,当单元格数量为3时。当我选择单元格编号3时,它就会停留在那里。那是正常的行为吗?如果是,那么,你可以提出一些建议,以便实现我的目标吗?谢谢!

4 个答案:

答案 0 :(得分:4)

你可以使用tableview的contentInsetsetContentOffset属性,例如

- (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]; //将所选单元格设置为顶部 }