【问题标题】:viewWillAppear / viewDidAppear firing multiple timesviewWillAppear / viewDidAppear 多次触发
【发布时间】:2011-10-11 19:25:03
【问题描述】:

我正在使用TabBarKit,并且我想执行一个请求,以在每次用户返回选项卡时从网络服务中提取新的内容。

我无法将请求代码放在 viewDidLoad 中,因为返回选项卡时它没有被触发。话虽如此,我注意到 viewWillAppear / viewDidAppear 在返回选项卡视图控制器时被多次调用。

如果我将请求代码放在那里,它会被触发多次,导致 web 服务被不必要地 ping。

我该如何解决这个问题?我应该使用哪种方法调用 HTTP 请求,以便每个视图执行一次?

【问题讨论】:

  • viewWillAppear 通常只调用一次,这就是我进行类似更新的地方。也许你应该弄清楚为什么它被多次调用。

标签: iphone objective-c ios


【解决方案1】:

您可以在提交异步下载之前尝试设置/检查 downloadInProgress 标志,然后在请求完成时重置该标志。

如果您使用 ASIHTTPRequest 之类的东西,它会在请求完成或失败时调用委托方法,此时您可以重置标志。它允许您单独标记每个请求,以便跟踪每个请求的成功或失败,因此这不会限制您一次运行一个后台请求。

【讨论】:

  • 这也是我认为目前最好的方法
【解决方案2】:

原来在控制器代码中有一个额外的 viewWillAppear 调用。如果您有兴趣关注更改,请在 Git 项目的问题部分提供 thread

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 2011-04-03
    • 2011-01-19
    • 1970-01-01
    • 2012-10-11
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多