2011-06-17 21 views
0

初めてアプリケーションを開くときにはいつでも起動するアプリケーションが欲しいです。いくつかのビューコントローラがあり、アプリケーションを終了して再び開くと、私が残したビューコントローラが表示されます。たぶん私は、メソッドapplicationWillTerminateメソッドを呼び出さなければなりません。アプリケーションがアクティブになったときのビューコントローラのロード

私は新しいビューを開くには、このコードを使用します。

UIViewController *control = [[SomeViewController alloc] initWithNibName:@"SomeViewController" 
                      bundle:nil]; 
UINavigationController *navControl = [[UINavigationController alloc] 
             initWithRootViewController:control]; 

[self presentModalViewController:navControl animated:NO]; 

[navControl setNavigationBarHidden:YES]; 

[control release]; 
[navControl release]; 

ボタンにリンクする際に、このコードは素晴らしい作品。しかし、私はapplicationDidBecomeActiveメソッドでそのコードを配置すると動作しません。

答えて

2

最も簡単な方法は、Info.plistにUIApplicationExitsOnSuspendを設定することです。

これは本当に期待された動作ではありません。ユーザーは、アプリを一時的に放置した場合(たとえば、電話をかけたなど)に、アプリを「中断した場所」に表示することを期待しています。

あなたのコードスニペットはビューコントローラを追加しますが、あなたのアプリケーションデリゲートはUIViewControllerではないため動作しそうにありません。また、古いView Controllerの削除については何もしません。

EDIT:-applicationDidEnterBackground:

  • 、「スプラッシュ画面」ビュー(ないビューを追加:あなたがする必要があるのは、スプラッシュスクリーン(か何か)を表示、それはこのようなものだ場合にはコントローラ)をself.windowに設定します。 (から返された後、iOSは「スクリーンショット」を取得し、これをアプリスイッチアニメーションで使用します)。
  • -applicationWillEnterForeground:で、必要なアニメーションを実行します。最終的にウィンドウからビューを削除します(call -removeFromSuperview)。

EDIT 2: ...これはあなたが望むものではないかもしれません睡眠/覚醒イベント、上で起こる除き、-applicationWillResignActive:/-applicationWillBecomeActive:で動作する同じ

私はビューの使用を避けるだろうこれはコントローラのビューコントローラをビューコントローラに階層化することは問題になりがちです(たとえば、どのVCを表示するかを把握しておかなければなりません。 VCが画面に表示されている間あなたのアプリを背景にしています...)

+0

申し訳ありませんが私は私の質問を別の言い方をしていたはずです。ユーザーがアプリをランチしたときにロゴアニメーションを実行する必要があるからです。 –

0

applicationDidBecomeActiveメソッドは、presentModalViewControllerについて知らないアプリケーションデリゲートにのみ送信されます。

代わりに、あなたのappDelegateにapplicationWillEnterForeground:を実装することをお勧めします。これは、新しく起動されたアプリケーション(状態が末尾のapplication:didFinishLaunchingWithOptions:に相当)に復元する必要があります。

OR ...(編集) 特定のviewControllerを実行したい(まだロードされていますか?)...あなたはタブコントローラを持っているだけでapplicationWillEnterForegroundに次のコードを入れて、最初のビューコントローラのルートに行きたい場合たとえば、:

UITabBarController * myTabBar = self.tabBarController; 
myTabBar.selectedIndex = 0; 
[[myTabBar.viewControllers objectAtIndex:0] popToRootViewControllerAnimated:NO]; 
+0

このメソッドではどのようなコードを記述する必要がありますか?申し訳ありませんが、私はこれに新しいです。助けてくれてありがとう –

+0

なぜ私はそれが必要な理由は、人々がアプリケーションを開くときに会社がロゴアニメーションを実行したいからです。そのアニメーションは私の最初のビューコントローラにあり、それが私がそれにジャンプしたい理由です。 –

+0

私はアプリケーションを書こうとしました:didFinishLaunchingWithOptions;その方法では動作しませんでした –

0

一時的な解決策:

を私は上の自分のアプリケーションのクラッシュを作りましたapplicationWillResignActiveメソッドとそれが動作します。私のアプリケーションは、起動時にアニメーションを実行する必要があります。しかし、これは次回アプリケーションを起動するときに最初に開いたときと同じように起動するために機能します。

関連する問題