将UITableViewCell滚动到tableview的顶部

时间:2016-08-20 15:59:11

标签: ios uitableview swift2

我有一个包含三行的tableView现在我想将我的cell2移动到tableView的顶部,以便 Cell1变得完全不可见(在tableView的界限之外)

这是我试过的:

    func textViewDidBeginEditing(textView: UITextView) {

    let index = NSIndexPath(forItem: 1, inSection: 0)
    tableView.scrollToRowAtIndexPath(index, atScrollPosition: .Top, animated: true)

} 

以上什么都没做,也许我错过了那里的东西

我也尝试过这个:

    func textViewDidBeginEditing(textView: UITextView) {

    let cgpoint = CGPointMake(0, (CGFloat(-64 - (channelCellRowHeight )))) // channelCellRowHeight is the hight of my row which i want move outside the tableview so that cell2 can stay at top of tableview 
    // here cgpoint is not accurate  
    tableView.setContentOffset(cgpoint, animated: true)
  }

我想知道必须有更简单的方法来做这样的事情 scrollRowToTop api

任何线索如何实现我想要的?

1 个答案:

答案 0 :(得分:1)

如果您的表格视图单元格具有不同的单元格高度,那么您需要实现此委托方法,以便表格视图可以计算准确的单元格高度值,以便能够滚动单元格以获得所需位置

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText;
cellText = [dataArray objectAtIndex:indexPath.row];

UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];

NSAttributedString *attributedText =
[[NSAttributedString alloc]
 initWithString:cellText
 attributes:@
 {
 NSFontAttributeName: cellFont
 }];
CGRect rect = [attributedText boundingRectWithSize:CGSizeMake(tableView.bounds.size.width, CGFLOAT_MAX)
                                           options:NSStringDrawingUsesLineFragmentOrigin
                                           context:nil];
return rect.size.height;
}

希望这个答案可以帮助你