2010-04-16 73 views
1

我正在从tableview1.row导航到tableview2,其中有很多行正在提取。假设加载时间大约是3秒,我希望导航在选中tableview1.row后立即滑入tableview2,然后在获取数据并在其基础表视图中呈现数据时在tableview2上方显示UIActivityIndi​​catorView。注意,tableview2实际上是父UIView的子视图(与父对象是UITableView相反)。正在提取行数据的表视图中的活动指标显示

我已经看到了这个帖子:Activity indicator should be displayed when navigating from UITableView1 to UITableView2

...这使说明添加活动的指标开始和stopAnimating身边召唤把数据放到tableview2的viewDidLoad中。

事情是,我不确定上述解决方案如何工作,因为viewDidLoad在tableview2明显滑入视图之前运行并完成。

另外,我还尝试在IB中的tableview2上添加活动指标,并将IBOutlet指标的开始/停止动画代码添加到viewDidAppear中。数据读取运行会发生什么情况,并且我可以看到指示器正在旋转,但在读取结束时,表格视图为空。看起来像viewDidAppear为数据添加到表视图已经太晚了,因为cellForRowAtIndexPath等已经被解雇了。

任何人都可以请建议任何指针?我很可能在这里错过了一些显而易见的东西(我的上午将近5点,并且认为我的大脑很脆弱)。我应该从viewDidAppear重新触发cellForRowAtIndexPath等?是我的表视图是一个子视图,而不是父视图的问题?

感谢

+0

我很感兴趣,看看有什么可可忍者回答这些不拾取SO职位多得是。在可可的事件堆叠困惑我,我可以看到你的问题,但遗憾的是,我可以不提供任何帮助,因为我遭受了同样的问题。 – Kaili 2010-04-16 04:10:39

回答

1

我又看看我自己的问题,答案其实是非常简单的。任何非常密集的处理通常不应该在主线程上运行。我试图在同一个线程上执行我的数据密集型获取和UI活动指示器显示,因此这些按顺序依次处理。

解决方案是进入我的新视图控制器和a)启动主线程上的活动指示器动画,然后b)在另一个线程上运行数据密集型获取(使用performSelectorInBackground)。任何UI相关的更新都不能从后台线程应用。这些应该交还给主线程。

这个已经(例如here),是我不好从一开始:)

相关问题