1

iOS 5でストーリーボードでタブを使用する場合、一部のタブ(GLKViewControllerを含むタブなど)は、ストーリーボードに切り替えるときに初期化に非常に長い時間がかかる場合があります。

これは、このコントローラーのviewDidLoadメソッドでの作業量が非常に大きくなる可能性があるために発生します。

アプリケーションの起動時に、ストーリーボードで定義された特定のビューコントローラーを初期化する(そしてそれをviewDidLoadメソッドと呼ぶ)方法はありますか?これを行った後、遅延をなくす必要があります。

4

2 に答える 2

1

メソッドではなく、ビューコントローラのインスタンス化であると確信していますviewDidLoadか?ビューコントローラは、ストーリーボードが解凍されたときにすべて作成される可能性がありますが、ビューコントローラは、実際のビューオブジェクトのロードを可能な限り遅らせようとします。サブクラスのプロパティにアクセスするviewDidLoadまで呼び出されません。viewUIViewController

したがって、これを回避する方法は、viewプロパティに手動でアクセスすることです。

__unused CGRect frame = [[tabBarController.viewControllers objectAtIndex:index] view].frame;

スローダウンが実際にインスタンス化にあり、そのタブに切り替えるまでView Controllerが作成されない場合は、上記の例のように、プログラムでアクセスしてViewControllerを強制的にインスタンス化する必要があります。 。

于 2012-06-02T16:05:12.650 に答える
1

vewcontrollerのフレームまたは.viewプロパティを呼び出すことはおそらく機能しますが、viewcontrollerの初期化とビュー設定を台無しにすることはお勧めしません

以下の理由により

  • あなたが行う変更は標準ではなく、後で手に負えなくなるトリックやハックになります
  • 行った変更は、作成した他のプロジェクトに簡単に反映されません。

このような問題に直面した場合、たとえばアプリデリゲートでGLKViewControllerを個別に作成し、viewDidLoadがviewControllerで呼び出されるまで保持し、この初期化されたGLKViewControllerをviewControllerに移動します。

于 2012-06-02T16:11:40.607 に答える