iOS:我希望单击一个选项卡栏项目,始终指向原始URL

iOS:我希望单击一个选项卡栏项目,始终指向原始URL,ios,uiwebview,uitabbar,Ios,Uiwebview,Uitabbar,我有一个有4个标签的应用程序 其中一个选项卡是UIWebView。它从一个特定的URL开始。我希望这样,在通过单击链接和所有这些在这个webview中导航之后,当您再次单击选项卡项时,它会重新加载原始URL。如何实现这一点?在包含UIWebView的视图控制器的视图中,始终将URL设置为原始URL - (void) viewWillAppear:(BOOL)animated { NSURL *url = [NSURL URLWithString:@”http://www.google.

我有一个有4个标签的应用程序


其中一个选项卡是UIWebView。它从一个特定的URL开始。我希望这样,在通过单击链接和所有这些在这个webview中导航之后,当您再次单击选项卡项时,它会重新加载原始URL。如何实现这一点?

在包含UIWebView的视图控制器的
视图中,始终将URL设置为原始URL

- (void) viewWillAppear:(BOOL)animated {
     NSURL *url = [NSURL URLWithString:@”http://www.google.com”];
     NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
     [webView loadRequest:requestObj];
}
编辑回复:您的评论:

//Where you set the UITabBarDelegate (maybe in AppDelegate)
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
   if (item == webViewItem) {
      //Navigating to the web view or already showing it
      [webViewController reloadWebView]
   } else if (webViewNeedsReloading) {
      //Navigating to some other view
      [webViewController reloadWebView]
   }
}
我只是把检查放进去,因为我是一个优化恶魔,讨厌不必要地运行代码。话虽如此,我确信我正在做:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
   [webViewController reloadWebView]
}

会很好,对性能没有明显影响。

这只在我选择另一个选项卡然后返回时起作用,当我重新单击已选择的选项卡时,如何使其启动?还有另一个问题:当我以这种方式重新加载原始URL时,在UIWebView中打开的内容在恢复到原始URL之前快速闪烁。如何向用户隐藏此信息?首先:使用
uitabardelegate
方法
tabBar:didSelectItem:
捕获选择并直接调用该视图控制器上的方法来重新加载。第二:我可能会使用“tabBar:didSelectItem:”并在用户导航到其他选项卡时重新加载webview,以便重新加载等他们再回来时就准备好了。加载是在后台完成的,所以这样做不应该挂起你的主线程。如果用户想返回到“主菜单”,也就是说,而他们仍然在同一个选项卡上呢?