【问题标题】:UIWebView redraws on view did appear, how can I prevent this?UIWebView 在视图上重绘确实出现了,我该如何防止这种情况?
【发布时间】:2016-08-19 06:49:27
【问题描述】:

我正在使用UIWebView 开发一个应用程序,现在遇到下面列出的问题请帮我解决。

  • 在我的 UIWebView 中,我在其中显示了一些来自 String 的 HTML 内容。
  • 但是,当我转到另一个 ViewController 并返回时,它会变白一秒钟,然后再次绘制我的 HTML 内容。

有什么办法可以防止这种情况发生吗?我的 html 内容没有改变,我可以将其设置为固定内容或其他内容以更快地绘制它吗?

这就是我在 webview 中设置 html 的方式:

webView.loadHTMLString(htmlData, baseURL: nil)

【问题讨论】:

  • 当你改变视图控制器时你会破坏你的webview吗?
  • 在 webview 中显示加载 html coten 的代码
  • webView.loadHTMLString(htmlData, baseURL: nil)
  • 您能否向我们展示(通过编辑您的问题)您是如何以及何时(以哪种方法)在 web 视图中加载您的内容的?
  • 我在 UITableViewCell 中设置 UIWebView 内容。所以我调用方法:func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)

标签: ios objective-c swift uiwebview


【解决方案1】:

您的 HTMl 代码没有改变,因此将您的 webView 加载代码放在 viewDidLoad 中而不是 viewDidAppear,因为 viewDidAppear 总是在您的 view 出现时调用,而 viewDidLoad 称为单view 的加载时间。

【讨论】:

  • UIWebView 在 UITableViewCell 中。所以我在 cellForRowAtIndexPath 中调用它。
  • @TheCook 然后你在viewDidAppearviewWillAppear 中重新加载tableView,检查并重新加载viewDidLoad 中的数据。
  • 我应该怎么做才能修复它?
  • 正确检查我上面的评论。如果你在 viewDidAppear 内调用 tableView.reloadData 然后从那里删除并将其放入 viewDidLoad 内。
  • 哇,原来是这样!谢谢!
【解决方案2】:

您可以在应用程序的生命周期中执行一次引导 webview 的代码或进行相应的自定义。

// if you are navigating your application using navigation controller enables you to come back to the rootview without executing whole code of that class associated with view.
// this doesn't apply the whole life cycle of view controller
[self.navigationController pushViewController:vc animated:YES];

// if you navigating through below code this apply the whole life cycle concept of view controller.
[self presentViewController:vc animated:NO completion:nil];

你必须看看视图控制器的生命周期这里是一个有用的apple doc

viewController 生命周期短记

  • ViewDidLoad - 在您创建类并从 xib 加载时调用。非常适合初始设置和一次性工作。

  • ViewWillAppear - 在您的视图出现之前调用,适用于隐藏/显示字段或您希望每次在视图可见之前进行的任何操作。因为您可能会在视图之间来回切换,所以每次您的视图即将出现在屏幕上时都会调用它。

  • ViewDidAppear - 在视图出现后调用 - 启动动画或从 API 加载外部数据的好地方。

  • ViewWillDisappear/DidDisappear - 与 ViewWillAppear/ViewDidAppear 的想法相同。

  • ViewDidUnload/ViewDidDispose - 在 Objective C 中,这是你清理和释放内容的地方,但这是自动处理的,所以你不需要在这里做太多事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-09
    • 2012-01-16
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2023-04-03
    相关资源
    最近更新 更多