【问题标题】:Execute a function just after the view loads, iphone在视图加载后执行一个函数,iphone
【发布时间】:2010-03-05 09:13:42
【问题描述】:

我正在创建一个标签栏应用程序。其中一个选项卡用于 RSS 提要,它是一个导航应用程序。但是当我单击选项卡 bat 按钮时,加载该选项卡的视图需要一段时间。这是因为应用程序正在等待从服务器加载提要。有没有办法在加载该提要之前加载视图。截至目前,我在 viewDidLoad 方法中发出请求。这就是造成问题的原因。我应该将代码移动到哪个部分,以便在单击标签栏按钮时立即加载视图。

【问题讨论】:

  • 您应该专注于使您的套接字非阻塞/异步。因此,当您获取 RSS 提要时,您会显示一个“加载指示器”。并且仅在加载后显示。
  • 我有 3 个标签栏,2 个简单的应用程序和第 3 个,这个。单击第三个选项卡后,在加载提要之前,视图仍然是以前的应用程序,这导致了我的问题。当然,我正在尝试完全按照您的建议进行操作,但只有在加载视图时才能完成。

标签: iphone rss navigation tabbar


【解决方案1】:

我在 iCodeBlog 上推荐this great article,这是一种非常优雅的方式。如果您以NSOperation 的形式提交您的 rss 提要加载,它将在后台很好地进行,而不会阻塞您的主线程。

【讨论】:

  • 除了NSOperation还有其他方法吗?
  • 推荐的方法对您不起作用有什么原因吗?
  • 给定的教程是在单击按钮时加载提要,而我需要自动加载..
  • 加载是由调用 loadData 触发的 - 这不必来自按钮,只需在需要时调用它 - 即在您的应用程序委托中调用 [self loadData]; ?
  • 是的,这可以在您想要的任何地方调用,按下按钮或自动调用,这取决于您。您可以在“loadData”或“viewDidLoad”函数甚至“viewWillAppear”中执行此操作
【解决方案2】:

使用:

[self performSelector:@selector(performRSS:) withObject:<nil afterDelay:0.3f];

[NSThread detachNewThreadSelector:@selector(performRSS:) toTarget:self withObject:nil];

并将与 RSS 提要相关的代码放在名为“performRSS”的单独函数中。

【讨论】:

    【解决方案3】:

    我还认为问题更多在于您没有异步使用 HTTP 请求(正如 Apple 建议的那样)。请参阅此文档。 http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

    它在我的应用程序中对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 2012-10-12
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多