UIAlertView开始显示,屏幕变暗,但它不会popup,直到为时已晚!

我有一个button,当按下时调用加载信息从一系列的URL(约5秒的加载时间)。 在实际进行这些调用之前,我想添加一个“加载”警报。 当我使用UIAlertView的时候,屏幕变暗就像popup一样,但是直到数据被加载 – 太迟了! 我不知道发生了什么事情,就像加载数据的调用立即优先于显示新视图,即使它们是在添加新视图(或显示警报)的调用之后立即进行的, 。 这是代码的汇总版本:

-(void) refresh{ UIAlertView *av = ... [av show]; //this should pop up before dat begins to load [myDataSource loadData]; //this contains a series of [NSData initWithURL] calls [self.tableView reloadData]; //here I would hide the AlertView, but if I do I see it for just s split second //when the tableView has already reloaded } 

在此先感谢您的任何见解!

***编辑任何人谁使用performSelectorInBackground小心增加复杂的创build什么是有效的线程化程序。 例如,泄漏可能会出现,因为新线程没有autorelease池 – 你必须添加一个,等等。

当你试图从互联网上检索数据(我猜你正在使用像[NSString stringWithContentsOfURL:…])主线程正在等待这些数据,因此应用程序无法重新绘制接口。 你可以尝试使用:

 [mySourceData performSelectorInBackground:@selector(loadData) withObject:nil]; 

如果你正在使用coredata在对它进行任何操作之前lockingNSManagedObjectContext并在完成时解锁它,请小心。

如果你有一堆执行的操作,除了performSelectorInBackground:像cescofry写的,你可以使用NSOperation和NSOperationQueue。

无论如何,你可能不想要一个UIAlertView。 看看GitHub上的MBProgressHUD 。