popViewController 不会删除 UINavigationBar 项目

Posted

技术标签:

【中文标题】popViewController 不会删除 UINavigationBar 项目【英文标题】:popViewController does not remove UINavigationBar items 【发布时间】:2011-03-03 18:31:17 【问题描述】:

我有一个奇怪的问题。我在这里和互联网上找到了一些提示,但我没有解决我的问题。这就是发生的事情:

我有一个包含 9 个项目的 TabBar 导航。它们都是 UINavigationItems。在其中一个上,我在某些条件下将默认 viewController 替换为另一个。

为此,我使用 popViewController 和 pushViewController。这工作得很好,但我有一个问题,UINavigationBar 与它不同步。效果是我看到了正确的视图,但是当我单击“返回”按钮时,它会切换到一个空的导航栏项目,然后我会从那里回到 rootViewController(例如“更多”)。

这是我的代码:


- (void)viewWillAppear:(BOOL)animated  
  if ([[myAppDelegate bcUser] userLoggedIn]) 
    // user is logged in
    MyDataLoggedInViewController *loggedInViewController = [[[MyDataLoggedInViewController alloc] initWithNibName:@"MyDataLoggedInView" bundle:nil] autorelease];
    UINavigationController *navController = self.navigationController;
    [[self retain] autorelease];

    [navController popViewControllerAnimated:YES];
    [navController pushViewController:loggedInViewController animated:YES];
   

我希望有人可以提供帮助。我尝试了我发现的一切,但没有任何帮助。 :-/

感谢和最良好的祝愿, 托马斯

【问题讨论】:

【参考方案1】:

尝试设置:

[navController popViewControllerAnimated:NO];
[navController pushViewController:loggedInViewController animated:NO];

因为您很可能正在等待动画完成。

【讨论】:

要么,要么你需要重置你的 UINavigationController 的 rootView。 不幸的是,这没有帮助。我已经尝试过了,没有运气。 “重置rootView”是什么意思? UINavigationController class Reference navigationController 的 rootView 是位于导航堆栈位置 0(底部)的 viewController。

以上是关于popViewController 不会删除 UINavigationBar 项目的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 的 iphone 和 iPad 中显示 UI PopViewController 中心

PopViewController 正在占用内存

默认 popViewController 过渡意外淡出

popViewController 和 pushViewController 动画

Swift - 解雇后的popViewController

popViewController(animated: true) 动画运行缓慢