我有以下代码。
UIActivityIndicator *activity = [[UIActivityIndicator alloc] initWithActivityIndicatorStyle:
UIActivityIndicatorStyleWhite];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Processing" delegate:self otherButtonTitles:nil];
[alert addSubview:activity];
[activity startAnimating];
[alert show];
WebServiceController *web = [[WebServiceController alloc]init];
NSDictionary *dict = [web getDetails];
问题是警报没有显示。 WebServiceController 是一个 XML 解析器,它从指定的 URL 获取详细信息并返回它们。应在调用服务时显示警报,因为获取详细信息需要时间。但它仅在服务呼叫结束后才显示警报。这是为什么?
因为[alert show]需要动画,由于服务控制器调用发生在主线程上,主线程正忙于执行服务调用,阻塞了alert view动画的执行。
您需要在后端线程上执行ServiceCall,请参阅NSOperation或PerformSelectorOnBackgroundThread,确保将具有AlertView的ViewController的委托传递给后端线程,服务调用完成后立即回调该委托。确保使用performSelectorOnMainThread 在主线程上执行回调调用。所有与 UI 相关的调用都应在主线程上执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)