我想在我的主委托中创建一个通用线程,我可以用它来显示UIActivityIndicator。我有几个视图将新视图推送到堆栈。大多数视图都是从调用视图中的didSelectRow方法调用的。当他们在UITableView中选择一行时,我想启动Activity Indicator并将新视图推送到堆栈。在新视图的viewDidLoad方法中,我使用Json对服务器进行了多次调用,这可能需要一些时间来处理。 从view1显示活动指示器的最佳方法是什么,并在处理完成后将其隐藏在view2中?
我是否梦想我可以在我的主代表中制作两种方法?
并从view1调用[startIndicator],这将在所有视图的顶部显示活动指标。
并在处理了隐藏活动指示符的viewDidLoad方法之后从view2调用[stopIndicator]
谢谢你的帮助!
答案 0 :(得分:0)
是的,你可以,只需确保在主线程上调用任何UIKit例程。你可以通过编写如下例程来使它更“线程友好”:
-(void)startIndicator {
if ([NSThread isMainThread] == FALSE) {
[self performSelectorOnMainThread:@selector(startIndicator) withObject:nil waitUntilDone:NO];
return;
}
/* Actual UIIndicator setup */
}
如果您有多个线程可能启动或停止指示器,您可能还需要向例程添加引用计数,每次某些线程调用“start”时递增,并在它们调用“stop”时递减,然后保持激活指示器直到“停止”呼叫将计数减少到零。