2012-02-09 4 views
0

いくつかのバックグラウンド操作を実行するためにアプリケーションがロードされている間(スプラッシュ画面が表示されている間)に時間を使用できますか教えてください。 (私はCLLocationManagerを呼び出して現在の場所を更新する必要があります)もし私がそれを行うことが許されていれば、コードをどこに置くか教えてください。スプラッシュが表示されている間に何かできますか?

+0

「スプラッシュ画面は」本当にスプラッシュ画面として使用されることを意図していませんでした。もともとあなたのアプリのUIは表示されていましたが、データはありませんでした。これはすぐに表示され、ユーザーにアプリが本当にすばやく読み込まれてからその中のデータで最新表示されたという印象を与えました。しかし、人々はローディング画面(会社のロゴなど)を表示するためにそれを微調整したので、Appleはそれを受け入れることになったと思います。 –

答えて

2

実際のスプラッシュ画面が表示されている間は何も実行できません。 あなたの行動は、スプラッシュ画面を削除するときに実行される

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

方法で起動します。 ユーザーインターフェイスを表示する前に時間コスト操作を実行したい場合は、この時間中に手動で "偽の"スプラッシュ画面を表示する唯一のオプションがあります。それはイメージまたは何か他のものにすることができます。アクティビティインジケータまたはアニメーション。スプラッシュ画面に使用されているのと同じ画像を使用すると、 ユーザーは違いは見られませんが、スプラッシュ画面は数秒間そのままになりますが、既にデータがロードされているように見えます。

この場合、アプリのデリゲートは、このようなことがあります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.viewController = [[ViewController alloc] 
    initWithNibName:@"FakeSplashViewController" bundle:nil]; 
    self.window.rootViewController = self.viewController; 
    [self performSelectorInBackground: @selector(someLongOperation) withObject: nil]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

- (void) someLongOperation{ 
    //doing something 
    //... 
    [self performSelectorOnMainThread:@selector(atLastLoadGUI) withObject:nil waitUntilDone:NO]; 
} 

- (void) atLastLoadGUI{ 
    // start GUI 
} 
関連する問題