setContentOffset不滚动我的UITableView

时间:2014-02-01 08:17:52

标签: ios objective-c uitableview

当我选择的单元格到达UITableView中的最后一个位置时,我试图将UITableViewCell向上滚动一个UITableViewCell位置

我有正确的逻辑来识别UITableView的最后一个可见的UItableViewCell。但是,使UITableView向上滚动一个位置的代码不起作用。这是我写的代码。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    cellSelectedBool = YES;

    cell = (CustomFinishingCell *)[tableView cellForRowAtIndexPath:indexPath]; // error
    [cell.widthTexField becomeFirstResponder];


    // Gets an array of current visible cells in UITableView
    NSArray *visibleCells = [tableView visibleCells];
    NSLog(@"%@", visibleCells);
    // get indexpath of last cell
    UITableViewCell *lastCell = [visibleCells lastObject];
    NSIndexPath *lastCellIndex = [finishingTableView indexPathForCell:lastCell];
    // perform scroll when last visible cell is selected
    if (indexPath.row == lastCellIndex.row) {
        NSLog(@"BIGGER");
        int cellHeight = 44;
        [UIView animateWithDuration:.25 animations:^{
            [finishingTableView setContentOffset:CGPointMake(finishingTableView.contentOffset.x,finishingTableView.contentOffset.y + cellHeight) animated:YES];
        }];
    }

2 个答案:

答案 0 :(得分:2)

你应该使用:

NSIndexPath *rowToSelect;  // assume this exists and is set properly
UITableView *myTableView;  // assume this exists

[myTableView selectRowAtIndexPath:rowToSelect animated:YES scrollPosition:UITableViewScrollPositionNone];
[myTableView scrollToRowAtIndexPath:rowToSelect atScrollPosition:UITableViewScrollPositionNone animated:YES];

答案 1 :(得分:0)

if (indexPath.row == lastCellIndex.row) {
    [finishingTableView scrollToRowAtIndexPath:indexPathatScrollPosition:
        UITableViewScrollPositionNone animated:YES];
}