1

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どこで何か間違ったことをしたのかわかりません。

誰かがすでにこの種の問題を抱えていますか?

4

0 に答える 0