【问题标题】:Getting empty view and blank navigation bar when I use popViewControllerAnimated使用 popViewController Animated 时出现空视图和空白导航栏
【发布时间】:2011-08-17 23:52:08
【问题描述】:

我正在编写一个基于 UINavigationController 的 iPhone 应用程序。我正在从有时返回虚假链接的服务器中提取数据。我通过推送 webview 视图控制器打开每个链接。我希望能够包含一些错误处理。我知道链接是否不好。所以我希望能够在我知道我的 webview 遇到错误后立即弹出 webview 视图控制器。

目前,我已尝试使用以下代码:

[self.navigationController popViewControllerAnimated:YES];

然后我得到一个导航栏,其中没有显示任何内容,但是如果我单击“后退”按钮应该在的位置,它会正常运行。当我单击“后退”按钮应位于的位置时,会弹出标题。视图控制器通常在那里显示内容的视图也是空白的,即使我弹回 UITableViewController。

我已经尝试过这个解决方法:

UINavigationController *nav = self.navigationController;
[self.navigationController popViewControllerAnimated:YES];
[nav.visibleViewController.view setNeedsDisplay];

我检查了 UINavigationController 中的 viewControllers 数组,其中包含正确的 viewcontrollers(即它已删除 webview 的 viewcontroller)。

我还尝试将代码放入要返回的视图控制器的 viewWillAppear 中,但该方法永远不会被调用。

我正在寻找一种方法来强制 UINavigationController 重新加载,就像在 UITableView 上调用 reloadData 一样。

任何帮助将不胜感激。

【问题讨论】:

  • 你能展示你用来推送视图控制器的代码吗?
  • 当然。 [self.navigationController pushViewController:wv 动画:YES];其中 wv 是已分配、初始化并传递它正在加载的 url 的 webview 视图控制器。

标签: iphone objective-c cocoa-touch uinavigationcontroller


【解决方案1】:

我在我的应用程序中看到了类似的内容,我使用的是在导航控制器的根视图上的 Interface Builder 中添加的导航栏,然后以编程方式为第二个视图创建导航栏及其子视图。当我弹出第二个视图以返回第一个视图时,我将隐藏 self.navigationcontroller 栏,该栏将显示下方的空白区域,直到出现前一个视图的 IB 导航栏。为了解决这个问题,我决定坚持以编程方式创建所有导航栏,从而为我解决了这个问题。

TL;DR - 如果您同时使用 IB 和以编程方式制作的导航栏,则在弹出视图时可能会发生这种情况,请为所有导航栏使用其中一个哟

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多