控制单个 UIWebview 的多个选项卡

Posted

技术标签:

【中文标题】控制单个 UIWebview 的多个选项卡【英文标题】:Multiple tabs controlling a single UIWebview 【发布时间】:2009-11-16 22:32:07 【问题描述】:

如何使用多个 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 会显示,但是是白色的并且不加载任何内容。

有什么提示吗?

【问题讨论】:

【参考方案1】:

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

另外,您能否发布一些代码来显示您如何将 webview 添加到每个视图控制器?如果您没有使用 -setFrame 设置 webview 的框架,一旦您将 webview 添加为视图控制器视图的子视图,它将无法正确显示。

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

标签栏对于您正在尝试做的事情来说确实是错误的模型。如果您想切换内容,您真正想要的是工具栏,因为这意味着以各种方式更改位置视图 - TabBar 用于在多个不相关的视图之间切换,因此当您尝试在多个选项卡中使用相同的视图。

现在,如果您确实有完全不相关的内容,为什么不考虑只使用不同的 UIWebView,每个选项卡一个。它们并没有那么重,以至于加载多个实例真的会伤害任何东西,并且选项卡在按下之前不会加载内容,因此它们不会一次全部加载。为了节省内存,您甚至可以在切换选项卡时丢弃视图控制器。但是让每个视图管理自己的 Web 视图更有意义,这意味着您可以更轻松地保持内容缓存。

【讨论】:

以上是关于控制单个 UIWebview 的多个选项卡的主要内容,如果未能解决你的问题,请参考以下文章

在 ViewPager 的多个选项卡中使用单个片段

如何为多个选项卡/窗口运行工具栏的单个实例

ionic 2中多个选项卡中的单个搜索栏过滤项目

iPhone - 从 UIWebView 切换选项卡

使用 Sencha touch 2 在 UIWebView 中选项卡切换太慢

使用单个选项卡上的多个屏幕