控制单个 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 的多个选项卡的主要内容,如果未能解决你的问题,请参考以下文章