Как загрузить представление в одном классе и отклонить его в другом классе? - PullRequest
0 голосов
/ 14 июля 2011

у меня 3 класса. Один - это класс, в котором отображается представление загрузки (класс A), один - класс, в котором я хочу закрыть представление загрузки (класс B), а последний - сам объект представления загрузки.

В классе A я могу показать представление загрузки просто отлично, вызвав showLoadingViewWithView: метод, который я показал ниже, однако, когда я добираюсь до classB и хочу отклонить тот же самый вид загрузки, который я создал, ничего не происходит.

Каждый метод вызывается путем создания экземпляра объекта загрузки, выделения ему памяти и затем [object methodCall]; затем отпустите.

-(void)showLoadingViewWithView:(UIView *)currentView
{
CGRect transparentViewFrame = CGRectMake(0.0, 0.0,320.0,480.0);
loadingView = [[UIView alloc] initWithFrame:transparentViewFrame];
loadingView.backgroundColor = [UIColor grayColor];
loadingView.alpha = 0.9;

loadingSpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
loadingSpinner.center = loadingView.center;
[loadingSpinner startAnimating];

UILabel *messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 180, 320, 30)];
messageLabel.textAlignment = UITextAlignmentCenter;
messageLabel.text = @"Loading Please Wait...";
messageLabel.textColor = [UIColor whiteColor];
messageLabel.backgroundColor = [UIColor clearColor];
messageLabel.font = [UIFont boldSystemFontOfSize:15];

[loadingView addSubview:loadingSpinner];
[loadingView addSubview:messageLabel];

[currentView addSubview:loadingView];

[messageLabel release];
}




-(void)dismissLoadingView
{
[loadingSpinner stopAnimating];
[loadingView removeFromSuperview];
}

Любая помощь будет огромной благодарностью.

1 Ответ

0 голосов
/ 14 июля 2011

Специально, когда вы работаете с индикаторами загрузки, вы часто показываете индикатор в одном месте и должны уведомить его о закрытии в другом месте.Для этого (но не только) вы должны использовать NSNotifications.Вот как вы его используете.

В классе A вы создаете наблюдателя уведомлений.Обычно в методе init.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeLoadingView:) name:@"CloseLoadingView" object:nil];

Затем вам нужно вызвать closeLoadingView: метод для фактического закрытия представления при получении уведомления:

-(void)closeLoadingView:(NSNotification)notification{
  //Close the view
  [loadingSpinner stopAnimating];
  [loadingView removeFromSuperview];
}

Всегда помните, чтобы удалить наблюдателей, когда вы нене нужны им.Обычно это происходит в dealloc.

-(void)dealloc{
   [[NSNotificationCenter defaultCenter] removeObserver:self name:@"CloseLoadingView" object:nil];
}

Теперь в классе B или из любого другого места в вашем приложении вы можете закрыть представление, просто отправив уведомление

[[NSNotificationCenter defaultCenter] postNotificationName:@"CloseLoadingView" object:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...