我有一个SpinnerController类,它有活动指示器的方法
-(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个其他viewControllers,我想使用上述功能的活动指示器。
我该怎么做?
答案 0 :(得分:1)
您可以创建活动指标的共享实例。它将帮助您创建单个实例并在整个代码中进行管理。您可以参考MBProgressHUD代码。
答案 1 :(得分:1)
有两件事可以帮助您改善代码。
首先,懒惰地实例化UIActivityIndicatorView
。我喜欢在私人ivars前加下划线,但这不是必需的。
-(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
的子类以继承该功能。
答案 2 :(得分:1)
您需要使用
公开方法+(void)StartSpinner
{
....
}
并在.h文件中声明为,
+(void)StartSpinner;
在其他视图控制器中,导入此类并按如下方式调用方法:
[SpinnerController StartSpinner];
和其他方法类似。
答案 3 :(得分:1)
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并在View控制器中为sharedController创建一个对象,如下所示
sharedController = [SharedController sharedController];
self.progressView = [sharedController createProgressViewToParentView:self.view withTitle:@"Loading..."];
您必须在代码
之后关闭使用 [sharedController hideProgressView:self.progressView];