【问题标题】:iphone - how to mentain the state of UIWebView?iphone - 如何保持 UIWebView 的状态?
【发布时间】:2009-09-24 10:38:03
【问题描述】:

我有一个 UIWebView 显示和带有一些复选框、单选按钮的 HTML 页面。我的应用程序有标签栏控制器,可以切换黑白两个控制器。我如何维护 UIWebView 的当前状态。 (例如,我选择了一个复选框,我更改了选项卡并转到其他 ViewController 并再次返回 UIWebView。WebView 自行重置并开始......我想保持 UIWebView 的状态(所有复选框都被点击) ..我会怎么做??

有什么想法吗??

提前致谢

【问题讨论】:

    标签: iphone uiwebview


    【解决方案1】:

    听起来您正在 viewDidAppear: 中加载 Web 视图,或者每次切换到选项卡时都会调用其他一些方法。如果你在 viewDidLoad: 中加载你的 web 视图,它只会被加载一次,并且会在你切换标签时保持它的状态。


    编辑:当我在 2009 年写下这个答案时,我显然没有像我想象的那样理解视图控制器的生命周期。科里弗洛伊德是对的。 viewDidLoad: 方法也可以被多次调用,因为如果视图没有被显示,UIViewController 将在内存不足的情况下卸载它的视图。当用户切换回视图时,viewDidLoad 会再次被调用以重建视图。

    好尴尬。

    【讨论】:

    • 是的,但添加警告:如果视图控制器在视图离开屏幕时收到内存警告,它将被销毁并通过扩展失去其状态。
    【解决方案2】:

    我有个想法可能会有所帮助:

    • 要从您的应用程序向网页获取状态,请将变量的值作为请求参数提供给调用的 URL,然后让网页处理它们并相应地查看表单元素。
    • 要从网页中将状态返回到您的应用程序,请在每次更新其任何元素时刷新网页,并使用新 URL 为更改的元素提供新值。回到您的应用,您可以实现 UIWebViewDelegate 并在方法 WebViewDidFinishLoad(或您喜欢的 WebViewDidStartLoad)内部使用 webView.request.URL 来解析 GET 参数并相应地更新您的应用。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多