您需要在後臺加載表格的數據,然後調用UITableView的reloadData方法。
您可以使用GCD輕鬆地將加載函數異步分派到後臺隊列。當該任務完成時,讓工作線程返回主線程調用[tableView reloadData]
的塊。這是如何:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
...
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
// load your table data here
[self loadMyTableData];
// when done dispatch back to the main queue to load the table
dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_async(mainQueue, ^{
[self.tableView reloadData];
});
});
...
}
據我所知,主線程中調用reloadData。但realodData調用cellForRowAtIndexPath ...並且此方法需要加載一些數據異步。 –
我看到了,所以你不是在等待reloadData完成,而是reloadData發起完成的異步任務。你能修改你的問題來反映這個嗎? NSRunLoop仍然是你想要的,雖然我不明白你爲什麼想要在異步數據加載時持有主線程人質。 – NSProgrammer
需要主線程等待reloadData,因爲這會使旋轉動畫變得愉快。 –