xmlデータを解析した後に、配列infoservicesで満たすカスタムセルを持つUITableViewがあります。各セルに対してUITableViewカスタムセルをリフレッシュするときの遅延
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
ApplicationCell *cell = (ApplicationCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[self.cellNib instantiateWithOwner:self options:nil];
cell = tmpCell;
self.tmpCell = nil;
}
infoService *e = [self.infoservices objectAtIndex:indexPath.row];
cell.name = [e infoName];
NSString *infodetails = [e infoDetails];
if (infodetails == nil) {
cell.details = @"Loading...";
[self startInfoDownload:e forIndexPath:indexPath];
NSLog(@"Loading...");
} else {
cell.details = infodetails;
NSLog(@"Show info detail: %@", infodetails);
}
return cell;
}
- (void)infoDidFinishLoading:(NSIndexPath *)indexPath
{
infoDownloader *infoserv = [imageDownloadsInProgress objectForKey:indexPath];
if (infoserv != nil)
{
[infoservices replaceObjectAtIndex:[indexPath row] withObject:infoserv.appRecord];
NSIndexPath *a = [NSIndexPath indexPathForRow:indexPath.row inSection:0]; // I wanted to update this cell specifically
ApplicationCell *cell = (ApplicationCell *)[self.tableView cellForRowAtIndexPath:a];
cell.details = [[infoservices objectAtIndex:[indexPath row]] infoDetails];
NSLog(@"Updating=%@", [[infoservices objectAtIndex:[indexPath row]] infoDetails]);
}
}
私は、個々のセルのために
- (void)startDownload
でオブジェクトinfoDownloaderからXMLデータを取得し、解析するNSURLConnection sendAsynchronousRequestを使用しています。
データがinfoDownloaderから正常に解析デリゲートメソッドされた後は、
- (void)infoDidFinishLoading:(NSIndexPath *)indexPath
と呼ばれる問題が
- (void)infoDidFinishLoading:(NSIndexPath *)indexPath
は、各セルを解析した後に呼び出されると、私は
を見ることができる一方で、ということですNSLog(@"Updating=%@", [[infoservices objectAtIndex:[indexPath row]] infoDetails]);
デバッガで正しい詳細を使用すると、セルd oesは直ちにリフレッシュされませんが、6〜7秒後にリフレッシュされます。 infoDidFinishLoading後のデバッグ出力がないので、またcellForRowAtIndexPathは、何らかの理由で
- (void)infoDidFinishLoading:(NSIndexPath *)indexPath
から呼び出されません。また、cellForRowAtIndexPathが再び呼び出されないので、cell.detailsが実際にどのように更新されるのか分かりません。
アップルのLazyTableImagesローディングの例を使ってこの機能をセットアップしようとしましたが、これは成功しましたが、何がうまくいかないのか分かりません。