i've просто задал этот вопрос Run code on background and get return codeWeird UIAlertView с UIActivityIndicator
И я использовал UIAlertView с индикатором активности, делая фоновую задачу, окончательный код:
-(void)isConnectedToInternet:(void (^)(BOOL))block
{
palert = [[UIAlertView alloc]initWithTitle:@"Comprobando conexión a internet" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
[palert show];
if(palert != nil) {
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator.center = CGPointMake(palert.bounds.size.width/2, palert.bounds.size.height-45);
[indicator startAnimating];
[palert addSubview:indicator];
}
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString:@"http://www.google.com/"]];
[request setHTTPMethod:@"HEAD"];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
if (block) {
[palert dismissWithClickedButtonIndex:0 animated:YES];
block(([httpResponse statusCode] == 200) ? YES : NO);
}
}];
Его же код, принятый ответ с UIAlertView, сразу после этого, показывая новый UIViewController, который делает аналогичную вещь в ViewDidLoad.
alerta = [[UIAlertView alloc]initWithTitle:@"Descargando..." message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
[alerta show];
if(alerta != nil) {
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator.center = CGPointMake(alerta.bounds.size.width/2, alerta.bounds.size.height-45);
[indicator startAnimating];
[alerta addSubview:indicator];
}
Я использовал тот же код, чтобы показать UIAlertView с индикатором активности долгое время назад, первый alertview для подключения к интернету проверить хорошо показывает, но не второй ...
Я действительно не могу понять, почему первый показывает индикатор внутри alerView, а второй показывает его вне alertView, если оба имеют точно такой же код.
И это происходит только после добавления первого UIAlertView, прежде чем добавить, что он работает хорошо.
Im действительно застрял на этом, я не могу найти решение.
У кого-нибудь есть идея?
EDIT
Легкий способ решения, я просто жёстко его.
И да, кажется, что alert.frame не установлен, может быть похож на этот вопрос: Question
indicator.center = CGPointMake(140, 70);
только что установленная рама индикатора индикатора с изображением alertview – krishh
Похоже, что вы используете 'CGRectZero' как' alerta.bounds' при использовании предупреждения во второй раз. Попробуйте подклассифицировать 'UIAlertView' и установить рамку индикатора активности вместо' layoutSubviews'. –
hi @ user2260916 проверить это [сообщение] (http://stackoverflow.com/questions/4906726/how-can-i-do-uialertview-with-activity-indicator), вы решите свою проблему, удачи –