1

具体的には、メインのView Controllerで通知を登録する前にdidFinishLaunchingWithOptions、「スプラッシュ」(Ob-Cオタクを許してください、実際に何と呼ばれるか忘れてしまいました)画面からタスクを実行できるようにします。

[[[[[[UIApplication sharedApplication] delegate] window] rootViewController] topViewController] functionIwantToCallOnceAtTheStart];

補足: 「グローバル スタート ホイッスル」のアイデアが気に入っていますが、これがデフォルトではないのはなぜですか?

ロギングdidFinishLaunchingWithOptionsとルート ビュー コントローラーのデリゲート メソッドにより、

2013-07-25 02:02:46.532 Tests[918:c07] awakeFromNib
2013-07-25 02:02:46.535 Tests[918:c07] didFinishLaunchingWithOptions
2013-07-25 02:02:46.538 Tests[918:c07] viewDidLoad
2013-07-25 02:02:46.539 Tests[918:c07] viewWillAppear
2013-07-25 02:02:46.540 Tests[918:c07] viewWillLayoutSubviews
2013-07-25 02:02:46.543 Tests[918:c07] viewDidLayoutSubviews
2013-07-25 02:02:46.544 Tests[918:c07] viewWillLayoutSubviews
2013-07-25 02:02:46.545 Tests[918:c07] viewDidLayoutSubviews
2013-07-25 02:02:46.549 Tests[918:c07] viewDidAppear

awakeFromNibしかし、常に didFinishLaunchingWithOptions の前に来て、すべての iOS デバイス/バージョンで来ることが保証されていますか?

この質問には役立つ回答がありますが、私のプロジェクトはストーリーボードを使用しており、ストーリーボードを使用して rootViewController を手動で設定することの意味がわかりません。

編集

最初にこの質問をしたのは、起動イメージをアニメーション化したかったからです。これを行うためのより良い方法があることは理解していますが、アプリが開始されるとすぐに、「アプリケーション開始」通知を使用してネットワーク要求を起動し、メイン ビュー コントローラー (UITableViewController) にデータを入力したいと考えています。

4

3 に答える 3

3

awakeFromNibapplicationDidFinishLaunching が呼び出される前に、ストーリーボードの最初のビュー コントローラーで呼び出されることが保証されています。nib からの読み込みは、起動の一部です。

ただし、質問から何をしようとしているのかは明確ではありません。起動イメージが表示されている間、View Controller は実際にはそこにないので、何をするように要求していますか? ロードされるまでUIオブジェクトは存在しないため、実行しようとしているタスクがView Controllerの責任下にない場合があります。

于 2013-07-25T20:20:59.233 に答える
1

起動イメージのポイントは、静止画像をできるだけ早く画面に表示することで、アプリが実際よりも速く起動するように見せることです。起動イメージが最初のビュー コントローラーが表示するビューとまったく同じである限り、誰も違いを知りません。その最初の画像を何らかの方法でアニメーション化したい場合は、問題ありません。

  • 画像を表示し、次のビュー コントローラーへのカスタム トランジションを実行する初期ビュー コントローラーを作成します。

  • 表示している画像が画面を完全に覆っている場合は、その画像を起動画像として使用することもできます。それ以外の場合は、アプリを実行し、最初のビュー コントローラーのビューが表示されたときにスクリーン キャプチャを行います。そのスクリーンショットを起動イメージにします。

  • メソッドにコードを追加-application:didFinishLaunchingWithOptions:して、最初のビュー コントローラーから次のビュー コントローラーへの移行を開始します。

それはそれを行う必要があります。起動イメージは一種の実装の詳細であることを忘れないでください。ユーザーはそれを別のものとして認識する必要はありません。そのため、ふざけるのではなく、View Controller トランジションとしてやろうとしていることを行うのが自然です。起動イメージ自体。

于 2013-07-25T21:26:08.790 に答える
1

本当にいくつかのコードを実行したい場合は、メイン クラスを開くことができます。プロジェクトのサポート ファイルの下にあります。

また、このガイドでは、アプリケーションの起動シーケンスについてかなり説明しています。

http://oleb.net/blog/2012/02/app-launch-sequence-ios-revisited/

于 2013-07-25T20:37:08.517 に答える