0

タブバーコントローラーと多くのUIViewControllerを備えたアプリケーションがあり、ストーリーボードでインターフェイスを定義しました。ユーザーがアプリケーションをランチするとき(アプリケーションが読み込まれるとき)、ユーザーがタブを選択するときではなく、すべてのControllerViewが読み込まれるようにします(私のUIViewControllerは複雑で、ロードに少し時間がかかります)

4

1 に答える 1

1

あなたが投稿した答えは正しくありません。-loadView手動で呼び出すべきではありません。ドキュメントから:

討論

このメソッドを直接呼び出さないでください。ビューコントローラは、ビュープロパティが要求されたときにこのメソッドを呼び出しますが、現在はnilです。このメソッドは、ビューをロードまたは作成し、それをviewプロパティに割り当てます。

したがって、代わりに単にviewプロパティにアクセスする必要があります。変更されたコードは次のようになります。

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
for(int i = 0; i < 5; i++) {
    [[tabBar.tabBarController.viewControllers objectAtIndex:i] view];
}

-application:didFinishLaunchingWithOptions:また、このメソッドが5秒以内に返されない場合、iOSはアプリを終了するため、この作業はメソッド内で行われるべきではないことにも注意してください。このタスクは、次のように次のrunloop反復でスケジュールできます。

[[NSOperationQueue mainQueue] addOperationWithBlock:^{
    [self preloadTabs];
}];
于 2012-10-04T13:50:43.243 に答える