Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在多个视图中使用一个活动指示器?_Ios_Iphone_Uiactivityindicatorview - Fatal编程技术网

Ios 如何在多个视图中使用一个活动指示器?

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

我有一个类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个其他的视图控制器,我想使用上述功能的活动指示器


我该怎么做

您可以创建活动指示器的共享实例。它将帮助您创建单个实例并在整个代码中进行管理。您可以参考代码。

有两件事可以帮助您改进代码

首先,惰性地实例化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];

将此函数添加到其他每个视图控制器中。。这不是很简单吗?我想从一个类到另一个类使用这个函数。