iPhone で標準のナビゲーター インターフェイスを使用しています。最上位のテーブルビューから次のレベルに移動するとき、コア データから約 2000 レコードをロードする必要があり、これには 5 ~ 10 秒かかることがあるため、アクティビティ インジケーターを使用したいと考えています。
DidSelect メソッドのコードを削除すると機能する次のコードを実行しましたが、それ以外の場合は、他のビューが読み込まれている間、ビューがまだそこで待機していても、インジケーターは表示されません。メソッドは次のとおりです。
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
//-- start activity indicator (will be stopped when view disappears)
UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
[cell.contentView addSubview:m_activityIndicator];
[m_activityIndicator startAnimating];
return indexPath;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//--show the listViewController
CardListViewController *listViewController = [[CardListViewController alloc] initWithNibName:@"CardListViewController" bundle:nil];
NSString* selectedCardTypeName = [rootSelectionList objectAtIndex:indexPath.row];
enum CardTypes selectedCardType = cardTypeIDFromCardTypeName(selectedCardTypeName);
listViewController.selectedCardType =selectedCardType;
[self.navigationController pushViewController:listViewController animated:YES];
[listViewController release];
}
次のリストビューコントローラーの処理を開始する前に、アクティビティインジケーターを強制的に表示するにはどうすればよいですか?