我有一个tableview。它会从服务器收到一堆数据。每次tableview接收数据时我想在底部显示最新的数据。我调用了scrollToRowAtIndexPath:atScrollPosition:animated:
但是它落后于我的应用程序当我滚动到tableview的底部时我在屏幕上什么都不做。
这是我的主要代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"tableViewCell";
DLtestCellTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
NSDictionary* dict = arr[indexPath.row];
cell.myLabel.attributedText = dict[@"content"];
[cell.myImageview sd_setImageWithURL:dict[@"imageUrl"] placeholderImage:[UIImage imageNamed:@"transparentPlaceHolder"]];
return cell;
}
这里滚动到底部主代码
- (void)reloadTableView
{
dispatch_async(dispatch_get_main_queue(), ^{
NSIndexPath *lastRow = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableView insertRowsAtIndexPaths:@[lastRow] withRowAnimation:UITableViewRowAnimationLeft];
});
[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO];
}
答案 0 :(得分:0)
您应该使用scrollToRowAtIndexPath
方法。
在viewWillAppear中写下代码。
[theTableView reloadData];
NSIndexPath* ip = [NSIndexPath indexPathForRow:rowNumber inSection:sectionNumberHere];
[theTableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionTop animated:NO];
这里' rowNumber'是要滚动到的数据源中的行号。
或者您可以计算' rowNumber'如下:
int lastRowNumber = [tableView numberOfRowsInSection:0] - 1;
并将此lastRowNumber传递给indexPathForRow。
注意:numberOfRowsInSection返回行计数,而不是最后一个行号(行数 - 1)。