我正在编写一个基于UINavigationController的iPhone应用程序。我从服务器中提取数据,有时会返回虚假链接。我通过推动webview viewcontroller打开每个链接。我希望能够包含一些错误处理。我知道这个链接是不是很好。所以我希望能够在我知道我的webview遇到错误后立即弹出webview视图控制器。
目前,我已尝试使用以下代码:
[self.navigationController popViewControllerAnimated:YES];
然后我得到一个没有显示任何内容的导航栏,但如果我点击“后退”按钮的位置,它就会正常运行。当我点击“后退”按钮所在的位置时,标题会弹出。视图控制器通常在那里显示内容的视图也是空白的,即使我正在弹回UITableViewController。
我尝试过这个解决方法:
UINavigationController *nav = self.navigationController;
[self.navigationController popViewControllerAnimated:YES];
[nav.visibleViewController.view setNeedsDisplay];
我已经检查了UINavigationController中的viewControllers数组,并且它中有正确的viewcontrollers(即它已经删除了webview的viewcontroller)。
我还尝试将代码放在我正在弹回的viewcontroller的viewWillAppear中,但该方法永远不会被调用。
我正在寻找一种方法来强制UINavigationController重新加载,就像在UITableView上调用reloadData
一样。
非常感谢任何帮助。
答案 0 :(得分:0)
我在我的应用程序上看到类似这样的内容,我在导航控制器的根视图中使用我在Interface Builder中添加的导航栏,然后以编程方式为第二个视图创建导航栏及其子视图。当我弹出第二个视图返回第一个视图时,我会隐藏self.navigationcontroller栏,它会显示下面的空白区域,直到出现上一个视图的IB导航栏。为了解决这个问题,我决定坚持用编程方式创建我的所有导航栏来解决这个问题。
TL; DR - 如果您同时使用IB和以编程方式制作的导航栏,这可能会在弹出视图时出现,并坚持使用其中一个或所有导航栏