【问题标题】:UINavigationViewController setViewControllers not setting correctlyUINavigationViewController setViewControllers 设置不正确
【发布时间】:2016-06-07 14:19:50
【问题描述】:

我遇到了一个问题,即调用 setViewControllers 不会将我的视图控制器数组设置为我的导航视图控制器。我 am 在一个块中执行此操作,所以我不确定这是否是 UI 问题(但我已尝试通过将视图控制器设置在主队列中来解决此问题)。

[self thisIsABlock:^(){
        UIViewController3 *viewController3 = [storyboard instantiateViewControllerWithIdentifier:@"HeyHey"];
        // viewController3 is not nil

        NSMutableArray *array1 = [self.navigationController.viewControllers mutableCopy];
        // array1 contains [viewController1, viewController2]

        [array1 addObject:viewController3];
        [self.navigationController setViewControllers:array1 animated:NO];
        // Now array1 contains [viewController1, viewController2, viewController3] 

        NSMutableArray *array2 = [self.navigationController.viewControllers mutableCopy];
        // array2 only contains [viewController1, viewController2]
}];

这段代码是我在代码库中所做工作的抽象。我可能遗漏了一些导致此问题的关键代码,但我希望有人以前遇到过此问题并知道问题所在。谢谢!

// 编辑 1:我打电话给 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

当我从后台到前台打开应用程序时,我的代码可以正常工作。

【问题讨论】:

  • 换句话说,你在哪里调用这个块你期望它在从其他地方调用时工作吗?如果有,具体在哪里?

标签: ios objective-c iphone uinavigationcontroller


【解决方案1】:

上面的代码是正确的,但是你可以像这样提供有效的数据,

YourViewController *viewController3 = [self.storyboard instantiateViewControllerWithIdentifier:@"YourStoryBoardViewControllerIdentifer"];

希望对你有帮助。

【讨论】:

  • 感谢您的帮助!我确保检查viewController3 对象,看看它是否有效,而不是nil。我在我的问题的示例代码中留下了评论。
猜你喜欢
  • 2020-10-14
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多