iOS7 vs iOS8 - insertRowsAtIndexPaths和可见行问题

时间:2014-12-18 16:05:04

标签: ios objective-c uitableview

我有一个包含UITableView的UIViewController。当我点击一行时,一个方法会在轻敲的行中插入一些行。但是,如果行数超过显示器的高度,当我在iOS8上滚动时,我可以看到所有行。当我在iOS7上滚动时,它会跳过一些行,直到我旋转设备。之后,该表显示每次旋转的所有行。如何使表格在iOS7和iOS8中以相同的方式出现?最重要的是:为什么iOS7会在设备轮换之前切断最后几行?

以下是一些代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:NO];
    [self addRows:indexPath];
}
- (void)addRows:(NSIndexPath *)indexPath
{
    NSInteger numberOfRows = 10;
    NSUInteger count = indexPath.row +1;
    NSMutableArray *indexPathsArray = [NSMutableArray array];

    for(int i = 0; i < numberOfRows; i++) {
        [indexPathsArray addObject:[NSIndexPath indexPathForRow:count inSection:0];
        [self.dataSourceArray insertObject:[NSNumber numberWithInt:i] atIndex:count++];
    }
    [self.tableView insertRowsAtIndexPaths:indexPathsArray withRowAnimation:UITableViewRowAnimationFade];
    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

P.S。这只是一个演示代码,但原理是一样的。

1 个答案:

答案 0 :(得分:0)

试试这段代码:

- (void)addRows:(NSIndexPath *)indexPath
{
    NSInteger numberOfRows = 10;
    NSUInteger count = indexPath.row +1;
    NSMutableArray *indexPathsArray = [NSMutableArray array];

    for(int i = 0; i < numberOfRows; i++) {
        [indexPathsArray addObject:[NSIndexPath indexPathForRow:count inSection:0];
        [self.dataSourceArray insertObject:[NSNumber numberWithInt:i] atIndex:count++];
    }

    [self.tableView beginUpdates];
    [self.tableView insertRowsAtIndexPaths:indexPathsArray withRowAnimation:UITableViewRowAnimationFade];
    [self.tableView endUpdates];

    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
}