覆盖 viewDidAppear 并让它加载特定的 URL 不行?

Posted

技术标签:

【中文标题】覆盖 viewDidAppear 并让它加载特定的 URL 不行?【英文标题】:Overriding viewDidAppear and have it load specific URL not OK? 【发布时间】:2013-06-27 22:56:59 【问题描述】:

我正在查看其他人的代码,并注意到每次附加图像时都会刷新 Web 表单(单击“添加图像”,查找并选择图像,返回表单,表单变为空白)。而且,这是因为 url 被重新加载。在跟踪这个问题时,我注意到原始开发人员覆盖了 WebViewController 中的 viewDidAppear 实例方法,如下所示:

- (void) viewDidAppear:(BOOL)animated 

    NSURL *url = [NSURL URLWithString:self.defaultUrl];

    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [self.webView loadRequest:requestObj];

Apple 的文档说

您可以重写此方法来执行与呈现视图相关的其他任务。如果你重写了这个方法,你必须在你的实现中调用 super。

我看到 super 没有被调用,我认为放入 NSURLRequest 不是一个好习惯。我删除了代码,添加了 URL 调用按钮操作,一切都很好,所以这主要是一个风格/学术问题。

你同意 loadRequest 不应该在那里吗?感谢您的帮助。

【问题讨论】:

【参考方案1】:

为什么不应该在那里? loadRequest 在另一个线程上异步工作,因此它不会阻塞主线程。

通过发起异步客户端请求连接到给定的 URL。

如果它的行为符合预期,由您决定。

(哦,是的,您应该在viewDidAppear 中致电super)

【讨论】:

当它在那里时,当您从将图像添加到 Web 表单返回时调用它。而且,再次调用它会导致页面刷新,因此您永远无法填写表单。 在这种情况下,它可能属于viewDidLoad。这就是我所说的“有意的方式”。对于某些应用,每次视图出现时重新加载请求会很有用。 啊,我明白了!我将代码移动到 viewDidLoad 并且它可以工作(不会不断刷新)。感谢您的建议。 没问题。别忘了给 super 打电话! 哦,我完全删除了它,因为它没有被使用。再次感谢。

以上是关于覆盖 viewDidAppear 并让它加载特定的 URL 不行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Datatables 中加载表并让它在加载时自动滚动到最后一条记录

角度材质如何单击表格中的一行并让它将一个特定单元格的内容返回到变量中?

HSQL 数据库:加载特定的 Java 类路径

在 didFinishLaunchingWithOptions 之前调用 viewDidAppear

HTTP静态资源缓存永远策略

如何安装 OpenCV 'samples' 库并让它在 armhf 上工作?