Ios 如何在多个视图中使用一个活动指示器?
我有一个类SpinnerController,它有活动指示器的方法Ios 如何在多个视图中使用一个活动指示器?,ios,iphone,uiactivityindicatorview,Ios,Iphone,Uiactivityindicatorview,我有一个类SpinnerController,它有活动指示器的方法 -(void)StartSpinner { [spinner startAnimating]; spinner.hidden=YES; spinner = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(141.0, 190.0, 80.0, 80.0)]; [self.view addSubvie
-(void)StartSpinner
{
[spinner startAnimating];
spinner.hidden=YES;
spinner = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(141.0, 190.0,
80.0, 80.0)];
[self.view addSubview:spinner];
NSLog(@"Spinner running");
}
-(void)StopSpinner
{
[spinner stopAnimating];
spinner = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(141.0, 190.0, 80.0,
80.0)];
[self.view addSubview:spinner];
}
我有8个其他的视图控制器,我想使用上述功能的活动指示器
我该怎么做 您可以创建活动指示器的共享实例。它将帮助您创建单个实例并在整个代码中进行管理。您可以参考代码。有两件事可以帮助您改进代码 首先,惰性地实例化UIActivityIndicatorView。我喜欢在private ivar前面加下划线,但这不是必需的
-(UIActivityIndicatorView *) spinner
{
if (_spinner == nil)
{
_spinner = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(141.0, 190.0, 80.0, 80.0)];
_spinner.hidesWhenStopped = YES;
[self.view addSubview:_spinner];
}
return _spinner;
}
现在可以使用[self spinner]始终引用同一对象引用
-(void)StartSpinner
{
[[self spinner] startAnimating];
}
-(void)StopSpinner
{
[[self spinner] stopAnimating];
}
现在,您可以将其他视图控制器创建为SpinnerController的子类,以继承该功能 您需要使用
+(void)StartSpinner
{
....
}
在.h文件中声明为
+(void)StartSpinner;
在其他视图控制器中,导入此类并按如下方式调用该方法:
[SpinnerController StartSpinner];
与其他方法类似。U可以执行以下操作,在SharedController中编写以下代码
- (UIAlertView *)createProgressViewToParentView:(UIView *)view withTitle:(NSString *)title
{
Alert_UserLocation = [[UIAlertView alloc] initWithTitle:@"" message:title delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
[Alert_UserLocation show];
UIActivityIndicatorView *loaderView = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(130, 60, 25, 25)];
loaderView.tag = 3333;
loaderView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
loaderView.backgroundColor = [UIColor clearColor];
[Alert_UserLocation addSubview:loaderView];
[loaderView startAnimating];
[loaderView release];
return Alert_UserLocation;
}
- (void)hideProgressView:(UIAlertView *)inProgressView
{
if(Alert_UserLocation != nil)
{
[Alert_UserLocation dismissWithClickedButtonIndex:0 animated:YES];
Alert_UserLocation = nil;
}
}
和导入sharedController,并在视图控制器中为sharedController创建一个对象,如下所示
sharedController = [SharedController sharedController];
self.progressView = [sharedController createProgressViewToParentView:self.view withTitle:@"Loading..."];
在任何需要关闭的地方,请使用以下代码
[sharedController hideProgressView:self.progressView];
将此函数添加到其他每个视图控制器中。。这不是很简单吗?我想从一个类到另一个类使用这个函数。