Как сохранить смещение содержимого UITableView после вызова -reloadData - PullRequest
52 голосов
/ 27 декабря 2011
CGPoint offset = [_table contentOffset];
[_table reloadData];
[_table setContentOffset:offset animated:NO];    //unuseful

//    __block UITableView *tableBlock = _table;
//    [self performBlock:^(id sender) {
//        [tableBlock setContentOffset:offset];
//    } afterDelay:2];

Я не знаю ни одного метода делегата, который вызывается после reloadData.И использование afterDelay:2, что является своего рода хаком, может быть слишком коротким или слишком длинным, так как я могу это реализовать?

Ответы [ 12 ]

0 голосов
/ 22 сентября 2017

Это работает 100%

change the tableView.reloadData() 

в

tableView.reloadRows(at: tableView!.indexPathsForVisibleRows!, with: .none)
0 голосов
/ 29 ноября 2016

Для этого прекрасно работает

[tView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]
             atScrollPosition:UITableViewScrollPositionTop
                     animated:NO];
...