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];
}];

它大部分时间都有效。例如,如果我的控制器是这样的:

  • 一个
  • C
  • D
  • 更多的
    • E - F - G
    • 你好
    • Ĵ

当电流控制器为 A、B、C、D、E、G 或 I 时,它工作正常。如果当前控制器是 E、H 或 J,它会显示一个黑色方块而不是我的控制器。似乎 theUIMoreNavigationController和 my own之间存在混淆UINavigationController,但我看不出我在哪里做错了。

有没有人已经遇到过这种问题?

4

0 回答 0