控制单个UIWebview的多个选项卡

时间:2009-11-16 22:32:07

标签: iphone cocoa-touch uitabbar

如何使用多个UITabBar选项卡来控制单个UIWebView?

一个例子:

Pressing tab1: UIWebView loads index.html
Pressing tab2: the same UIWebView loads customers.html
Pressing tab3: the same UIWebView loads tos.html

我的方法是将UIWebView放在AppDelegate中,并将每个ViewController的self.webview设置为单个UIWebView。但是,WebView会显示,但是是白色的,不会加载任何内容。

任何提示?

3 个答案:

答案 0 :(得分:1)

WebView是昂贵的,因此您的方法可能是正确的,但您可能希望首先在每个选项卡视图控制器中创建单独的Web视图,并查看事先是否按预期工作。开销可能会导致您的应用开始接收内存警告,但这至少可以让您查看您的网页是否至少在该上下文中正确加载。

另外,您是否可以发布一些代码,说明如何将webview添加到每个视图控制器?如果您未使用-setFrame设置webview的框架,则在将webview添加为视图控制器视图的子视图后,它将无法正确显示。

答案 1 :(得分:1)

你需要-removeFromSuperview然后-addSubview来移动webview;只是重新分配给一个实例变量就行不了了。

答案 2 :(得分:1)

标签栏确实是您尝试做的错误模型。如果你想切换内容你真正想要的是一个工具栏,因为这意味着以各种方式改变一个地方视图 - TabBar用于在多个不相关的视图之间切换,因此当你尝试时,你正在反对它在多个标签页面中使用相同的视图。

现在,如果你真的有完全不相关的内容,为什么不考虑使用不同的UIWebViews,每个标签一个。它们不是很重,以至于加载多个实例会对任何事情造成伤害,并且标签在按下之前不会加载内容,因此它们不会立即加载。为了节省内存,您甚至可以在切换选项卡时丢弃视图控制器。但让每个视图管理自己的Web视图更有意义,这意味着您可以更轻松地缓存内容。