【问题标题】:iphone put loading screen until tableview is ready to goiphone放置加载屏幕,直到tableview准备好
【发布时间】:2011-08-05 09:35:26
【问题描述】:

在我的应用程序中,我使用了几个表格视图,当用户单击表格视图中的一个单元格时,我需要放置加载屏幕。我尝试放置新的 UIView(activityIndi​​cator 和标签)然后调用

[[self navigationController] pushViewController:newController animated:YES];

然后我可以在新 tableView 准备数据时显示加载屏幕。但是这种方法不太奏效,事实上,加载屏幕甚至没有出现,只是停留在之前的 tableview 直到新的 tableview 准备好。

所以我尝试了另一种方法,即使用 NSOperation/NSOperationQueue 放置加载屏幕。它可以工作,但加载屏幕有点晚(显示在新 tableView 的工作中间)。

我想在用户单击单元格后立即显示加载屏幕,我该如何解决这个问题?

【问题讨论】:

  • 您的加载屏幕代码未显示,因为它与必须加载的表视图位于同一线程上。它基本上在用户可见之前就被删除了。

标签: iphone uitableview uiactivityindicatorview


【解决方案1】:

我建议您将数据加载代码放在后台线程上并启动。然后放一个“正在加载...”视图或其他东西。这使显示器保持响应。当数据加载完成后,它可以通知主线程数据准备就绪,然后主线程可以取下“正在加载...”显示。

换句话说,当需要长时间运行的任务(例如数据加载)时,请阅读使用线程。

【讨论】:

    【解决方案2】:

    使用[NSThread detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument] 而不是NSOperation。将您的 tableView 流程代码放在一个单独的方法中,并在detachNewThreadSelector:@selecot(yourMethodName) 中调用它。在创建此线程之前,开始为您的活动控制器设置动画,并在线程完成时停止。您可以在此处找到 NSThreading 的完整参考 -> http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSThread_Class/Reference/Reference.html 。希望这会有所帮助。

    编码愉快!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      相关资源
      最近更新 更多