Не удалось удалить ModalViewController из parentView, который имеет UIActivityIndicatorController - PullRequest
1 голос
/ 01 апреля 2011

Вот мой способ запуска анимации индикатора активности:

-(void)showLoadingView{

CGRect transparentViewFrame = CGRectMake(0.0, 0.0,1024,768);
transparentView = [[UIView alloc] initWithFrame:transparentViewFrame];
transparentView.backgroundColor = [UIColor blackColor];
transparentView.alpha = 0.7;

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
spinner.frame = CGRectMake(1024/2, 728/2, 40, 40);
spinner.center = transparentView.center;
[spinner startAnimating];

UILabel *messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(spinner.frame.origin.x+60, 
                                                                  spinner.frame.origin.y-30, 150, 100)];
messageLabel.backgroundColor = [UIColor clearColor];
messageLabel.textColor = [UIColor whiteColor];
messageLabel.font = [UIFont boldSystemFontOfSize:24];
messageLabel.textAlignment = UITextAlignmentCenter;
messageLabel.text = @"Loading...";

[transparentView addSubview:spinner];
[transparentView addSubview:messageLabel];

[self.navigationController.view addSubview:transparentView];

[messageLabel release];
[spinner release];
[transparentView release]; 
}

А вот как и где я это называю, чтобы начать и уволить:

- (void)viewDidLoad {
[self showLoadingView];

[super viewDidLoad];
[self init];
[self createBarButtonItems];
[self createTableView];

[self parseResponse: [NSString stringWithFormat:services.filterURL,[filterOptions objectAtIndex:0],
                      [filterOptions objectAtIndex:1]]];

[[self parentViewController] dismissModalViewControllerAnimated:YES];
}

Но модальное представление никогда не отклоняется, и индикатор никогда не останавливается. Может кто-нибудь, пожалуйста, помогите мне с этим. Моя цель - загрузить приложение, оно заполнит экран прозрачным UIView, и у меня есть индикатор, который запускается сразу же и останавливается после анализа моего ответа.

Заранее спасибо.

1 Ответ

0 голосов
/ 01 апреля 2011

-dismissModalViewControllerAnimated: работает, только если вы ранее использовали presentModalViewController:animated: для его отображения.В этом случае вы только что добавили UIView в иерархию представления.

Создайте переменную экземпляра для хранения экземпляра прозрачного представления.Установите переменную экземпляра в -showLoadingView, затем, когда она будет готова, просто удалите ее из представления следующим образом ...

[transparentView removeFromSuperview];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...