我有3节课。一个是我在(类A)中显示加载视图的类,一个是我要在(类B)中解除加载视图的类,最后一个是加载视图对象本身。
在classA中,我可以通过调用下面显示的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];
}
任何帮助都会非常棒。
答案 0 :(得分:0)
特别是当您使用加载视图指示器时,通常会在一个位置显示指示器,并需要通知它在另一个地方关闭。为此(但不仅仅是),您应该使用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类或您应用程序的enywhere中,只需发送通知即可关闭视图
[[NSNotificationCenter defaultCenter] postNotificationName:@"CloseLoadingView" object:nil];