Existe alguma maneira de descobrir quando um UITableView
terminou de solicitar dados de sua fonte de dados?
Nenhum dos métodos viewDidLoad
/ viewWillAppear
/ viewDidAppear
do controlador de visualização associado ( UITableViewController
) é útil aqui, pois todos eles disparam muito cedo. Nenhum deles (de forma totalmente compreensível) garante que as consultas à fonte de dados tenham terminado por enquanto (por exemplo, até que a exibição seja rolada).
Uma solução que eu encontrei é para chamar reloadData
em viewDidAppear
, uma vez que, quando reloadData
retorna, a exibição de tabela é garantida para terminar de consultar a fonte de dados, tanto quanto ele precisa para o momento.
No entanto, isso parece bastante desagradável, pois suponho que esteja fazendo com que a fonte de dados seja solicitada as mesmas informações duas vezes (uma vez automaticamente e uma vez por causa da reloadData
chamada) quando é carregada pela primeira vez.
O motivo pelo qual quero fazer isso é que desejo preservar a posição de rolagem do UITableView
- mas até o nível de pixel, não apenas para a linha mais próxima.
Ao restaurar a posição de rolagem (usando scrollRectToVisible:animated:
), preciso que o table view já tenha dados suficientes, ou então a scrollRectToVisible:animated:
chamada do método não fará nada (que é o que acontece se você colocar a chamada sozinha em qualquer um de viewDidLoad
, viewWillAppear
ou viewDidAppear
).