UINavigationController setViewController:动画:导航栏困难

bei*_*ein 8 iphone uiviewcontroller uinavigationcontroller

我有一个令人难以置信的令人沮丧的问题似乎是一个错误,但我很难相信没有其他人遇到过这个问题.我的应用程序的根视图控制器是一个UITabBarController,其中每个选项卡都是UINavigationController.一切都很好.

现在我来到一个我想编辑堆栈的地方,所以我重新排列当前导航控制器的viewControllers然后执行:

[self.navigationController setViewControllers:newViewControllers animated:YES];
Run Code Online (Sandbox Code Playgroud)

堆栈被正确弹出/推送到顶视图控制器,但导航栏不会更新到当前视图控制器,并且似乎保持与popCon之前的viewController完全一样.如果我做:

[self.navigationController popToViewController:someViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

一切都很完美.有没有人曾经遇到过这个?有解决方法吗?我做错了什么?

Que*_* G. 10

我遇到了同样的问题,似乎Apple没有纠正这个错误,因此该线程的选定答案似乎是不正确的.我设法使用此错误报告纠正此问题,如Anurag的评论结合Scott Pfeil的评论.

这是代码:

navController.navigationBarHidden = YES;

NSArray* viewControllers =  navController.viewControllers;
UIViewController* currentController = [viewControllers objectAtIndex:viewControllers.count-1];

NSArray *controllers = [NSArray arrayWithObjects: viewController , currentController , nil];

[navController setViewControllers:controllers animated:NO];

navController.navigationBarHidden = NO;
Run Code Online (Sandbox Code Playgroud)

我在viewDidLoad中调用此代码,currentController我所做的只是替换以前的控制器viewController.

希望这可以帮助.

  • 将导航栏设置为隐藏然后显示它为我修复此问题. (3认同)

bei*_*ein 2

苹果似乎已经在最新的 SDK 中修复了这个问题

  • 使用 Xcode 9.0 我也面临同样的问题。这是一个错误吗? (3认同)