アプリ内に入る前に、サーバーからいくつかの情報をロードするために、アクティビティ インジケーターを含むスプラッシュ スクリーン ビューを表示したいと考えています。以下は私がそれを行う方法です:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
FeedViewController *feedViewController = [[FeedViewController alloc] initWithNibName:@"FeedViewController" bundle:nil];
MenuViewController *menuViewController=[[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];
self.navController = [[UINavigationController alloc] initWithRootViewController:feedViewController];
IIViewDeckController* deckController = [[IIViewDeckController alloc] initWithCenterViewController:self.navController leftViewController:menuViewController rightViewController:nil];
deckController.panningMode=IIViewDeckNoPanning;
deckController.panningView=menuViewController.view;
self.window.rootViewController = deckController;
[self.window makeKeyAndVisible];
// show splash screen until data is loaded
SplashScreenViewController *controller = [[SplashScreenViewController alloc] initWithNibName:@"SplashScreenViewController" bundle:nil];
controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[feedViewController presentModalViewController:controller animated:NO];
return YES;
}
FeedViewController.m では、次のようにしました。
- (void)viewDidLoad
{
// load data from a server
[self performSelector:@selector(dismissSplashScreen) withObject:nil afterDelay:0.0];
}
このコードは iOS6 で非常にうまく機能しますが、iOS5 でテストしたところ、アクティビティ インジケーターが回転するスプラッシュ スクリーンが消えませんでした。スプラッシュ スクリーンの実装方法が間違っているのではないかと思います。(しかし、これが iOS6 で機能する理由がわかりませんか?)