我有一个包含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。这只是一个演示代码,但原理是一样的。
答案 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];
}