UINavigationController
に埋め込まれた内にプログラムでコントローラーを設定しようとすると、アプリで非常に奇妙な動作が発生しUITabBarController
ます。
基本的に、私のアプリはUITabBarController
. その各タブはUINavigationControllers
. プッシュ通知を受け取ったときに、特定のタブを選択して の配列を設定したいUIViewControllers
。
これが私のコードです(App Delegate内):
UITabBarController *rootViewController = (UITabBarController*) [[[[UIApplication sharedApplication] delegate] window] rootViewController];
int idx = // find the tab position using rootViewController.viewControllers (the user can reorder them)
rootViewController.selectedIndex = idx;
UINavigationController *navController = childController.navigationController;
NSArray *ctrls = navController.viewControllers;
NSMutableArray *newCtrls = [NSMutableArray arrayWithArray:ctrls];
// Add one or more controllers to the list
UIViewController *detailsController = ....;
[newCtrls addObject:detailsController];
// Set the new list
[[NSOperationQueue mainQueue] addOperationWithBlock:^ {
[navController setViewControllers:newCtrls animated:YES];
}];
ほとんどの場合、機能します。たとえば、私のコントローラーが次のような場合:
- あ
- B
- ハ
- D
- もっと
- ホ - ファ - ソ
- こんにちは
- J
現在のコントローラーがA、B、C、D、E、G、またはIの場合、正常に動作します。現在のコントローラーが E、H、または J の場合、コントローラーの代わりに黒い四角が表示されます。UIMoreNavigationController
と自分の の間に混乱があるようですが、UINavigationController
どこで何か間違ったことをしたのかわかりません。
誰かがすでにこの種の問題を抱えていますか?