2012-12-26 24 views
0

好的我希望我在這裏錯過了一些基本的東西 - 我在這方面不是很專業。它應該是不言自明的代碼示例: 我解析了一個web託管的xml文件,該文件包含要在tableView中顯示的標題列表和關聯的URL以在選擇單元格時傳遞給webView。解析發生在tableView到一個字典中。如果我在主線程上解析它很好,但如果信號很差,我很擔心掛起UI。因此,我在這裏將解析調用包裝在一個調度隊列中,現在它呈現一個空表。但是,如果我回到視圖層次結構並再次嘗試(它嵌入在導航控制器中),那麼它可以工作,我的表格已經完全填充。 我假設通過使用輔助線程以某種方式在內容數組填充之前創建表。我該如何解決這個問題? 謝謝! AndrewiOS:在xml解析完成之前創建的表視圖

+0

只能從XML –

回答

1

實施的NSXMLParser- (void)parserDidEndDocument:(NSXMLParser *)parser委託方法。並從該方法調用你的tableView的reloadData

- (void)parserDidEndDocument:(NSXMLParser *)parser 
{ 
    dispatch_sync(dispatch_get_main_queue(), ^{ 
     [yourTable reloadData]; 
    }); 
} 

參考NSXMLParserDelegate

+0

精美作品萬分感謝 – user1084420

+0

@ user1084420分析數據後,你應該載入您的表,:愉快:) –

0

如果您在派遣隊列中進行分攤,則必須更新主隊列上的UI。

我正在做類似的事情。這裏是我的代碼:

dispatch_queue_t imgDownloaderQueue = dispatch_queue_create("imageDownloader", NULL); 
dispatch_async(imgDownloaderQueue, ^{ 
    NSString *avatarUrlString = [avatarImageDictionary objectForKey:@"url"]; 
    avatarImage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:avatarUrlString]]]; 

    dispatch_sync(dispatch_get_main_queue(), ^{ 
     id asyncCell = [self.tableView cellForRowAtIndexPath:indexPath]; 
     [[asyncCell avatarImageView] setImage:avatarImage]; 
    }); 
}); 
相關問題