我已經完成了所有的編碼,我使用XML獲取數據,然後在UITableView上顯示數據,數據顯示時不使用GCD,但是當我添加UIActivityIndicator並使用gcd,這樣ActivityIndicator將顯示直到所有數據都沒有到達。UITableView數據沒有出現在主視圖使用GCD(Grand Central Dispatch)
這裏是我的代碼:
[super viewDidLoad];
[self.activityIndicator startAnimating];
self.activityIndicator.hidesWhenStopped = YES;
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(myQueue,^{
xmlParser = [[XMLParser alloc]loadXMLByURL:@"http://www.irabwah.com/mobile/core.php?cat=0"];
[self.activityIndicator performSelectorOnMainThread:@selector(stopAnimating) withObject:nil waitUntilDone:YES];
});
在這裏
其返回我零,表示沒有數據到達,什麼問題?
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if ([xmlParser listPopulated] == nil) {
NSLog(@"number of row = %i",[[xmlParser listPopulated]count]);
return 0;
} else {
NSLog(@"number of row = %i",[[xmlParser listPopulated]count]);
return [[xmlParser listPopulated]count];
}
}
您需要添加加載數據到數據/ tableview中的其他代碼。我敢打賭,它是在異步方法返回之前觸發的,因此在表視圖呈現時您的數據是空的。 – bryanmac
除了在讀取數據的_thread_的末尾停止活動指示符以外,你究竟做了什麼? – peko
@bryanmac:我在我的項目中做的是從XML獲取數據並將其顯示到TableViewCell中,而我真的不明白你說的是什麼,有點在這裏混淆。 –