AppDelegate でプログラムによって作成された UITabBarController を取得しました。また、いくつかの UIViewController を内部に持つ 2 つの UINavigationController を作成しました。次のように、ナビゲーション コントローラーを UITabBarController に追加しました。
BVMapViewController *mapViewController = [[[BVMapViewController alloc] initWithNibName:@"BVMapViewController_iPhone" bundle:nil] autorelease];
BVFavoritesViewController *favoritesViewController = [[[BVFavoritesViewController alloc] initWithNibName:@"BVFavoritesViewController_iPhone" bundle:nil] autorelease];
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:mapViewController] autorelease];
[navigationController setToolbarHidden:YES];
UINavigationController *navigationControllerForFavorites = [[[UINavigationController alloc] initWithRootViewController:favoritesViewController] autorelease];
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
NSArray* controllers = [NSArray arrayWithObjects:navigationController, navigationControllerForFavorites, nil];
self.tabBarController.viewControllers = controllers;
[self.window setRootViewController:self.tabBarController];
結果は、2 つのナビゲーション コントローラーを持つタブ バー コントローラーを作成することで正しく機能します。
問題は次のとおりです。最初の UINavigationController には、内部に MKMapView を持つ UIViewController が含まれています。そのマップには一連の POI が表示されるため、そのうちの 1 つをタップすると、アプリは(バックグラウンドで) Web サービスにリクエストを送信し、終了するとすぐに、別の UIViewController をナビゲーション スタックにプッシュして表示するビュー コントローラーに通知します。そのPOIに関する追加情報、
[self.navigationController pushViewController:self.stationViewController
animated:YES];
ここで、次のエラーが表示されます。
_WebTryThreadLock(bool), 0x11d9b560: メイン スレッドまたは Web スレッド以外のスレッドから Web ロックを取得しようとしました。これは、セカンダリ スレッドから UIKit を呼び出した結果である可能性があります。現在クラッシュ中... 1 0x58a76a9 WebThreadLock 2 0x5bfdfe -[UITextView _updateForNewSize:withOldSize:] 3 0x5c00b4 -[UITextView setFrame:] 4 0x4c59df UIViewCommonInitWithFrame 5 0x4c5bae -[UIView initWithCoder:] 6 0x4d9fb7 -[UIScroll0xUI 5] 8bcroll0xUI 5 initWithCoder:] 8 0x7b1a02 UINibDecoderDecodeObjectForValue 9 0x7b10e5 -[UINibDecoder decodeObjectForKey:] 10 0x6a2648 -[UIRuntimeConnection initWithCoder:] 11 0x7b1a02 UINibDecoderDecodeObjectForValue 12 0x7b1418 UINibDecoderDecodeObjectForValue 13 0x7b10e5 -[UINibDecoder decodeObjectForKey:] 14 0x6a1aa3 -[UINib instantiateWithOwner:options:startDeferredTransitionIfNeeded:] 25 0x5804a3 -[UINavigationController pushViewController:transition:forceImmediate:] 26 0x580098 -[UINavigationController pushViewController:animated:] 27 0x386f -[BVMapViewController parserDidFinishWithStation:] 28 0x785c -[BVParser parseStation:] 29 0xf8a0d5 -[NSThread main] 30 0xf8a034 NSThread_main 31 0x94e53ed9 _pthread_start
メインスレッドでこれを実行しようとしましたが、プッシュされたコントローラーのビューがすべて黒くなります。
よろしくお願いします。良い一日を。