iphone放入加载屏幕直到tableview准备好了

时间:2011-08-05 00:32:57

标签: iphone uitableview uiactivityindicatorview

在我的应用程序中,当用户单击tableView中的一个单元格时,我需要使用几个tableviews来放置加载屏幕。我试图放入新的UIView(activityIndi​​cator和label),然后调用

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

然后我可以在新tableView准备数据时显示加载屏幕。但是这种方法并没有完全奏效,事实上,加载屏幕甚至没有显示出来,只是在新的tableview准备就绪时才停留在之前的tableview上。

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 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。希望这会有所帮助。

快乐的编码!