IOS/Objective-C: 启动和结束 uiactivityindicatorview 的方法

IOS/Objective-C: Methods to start and end uiactivityindicatorview

我正在尝试创建可以重复使用的方法,以便在不同的长时间活动(例如将 table 与服务器同步)期间启动和停止纺车。

我的启动方式:

-(void) startSpinner {
    UIActivityIndicatorView *activityIndicator;

    activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    activityIndicator.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
    activityIndicator.center = self.view.center;
    [self.view addSubview: activityIndicator];

    [activityIndicator startAnimating];
    }

和结束方法

-(void)endSpinner:(UIActivityIndicatorView *) spinner forTable:(UITableView *)tableView {
    [tableView reloadData];
    [spinner stopAnimating];
    tableView.userInteractionEnabled = YES;
}

我遇到的问题 运行 是结束方法无法识别在开始方法中创建的 uiactivityidicator。

我应该将其保存在 属性 中吗?或者我怎样才能从不同的方法中获取微调器以保存它。

我想在可重复使用的代码中设置它,因为我在不同的视图控制器中有许多 table 视图,我想在其中包含此代码。 table 视图已经有了属性,但是我是否必须在每个我想包含微调器的视图控制器中设置一个 uiactivityindicator 属性?

感谢您的任何见解。

在 AppDelegate 中声明一个 属性:

   @property (strong,nonatomic) MyActivityIndicator *activity;

并初始化它:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    _activity=[[MyActivityIndicator alloc]init];
}

然后在appDelegate中声明如下方法:

- (void)showActivity
{
    dispatch_async(dispatch_get_main_queue(), ^{
        [_window addSubview:_activity];
        [_activity startAnimating];
    });

}

- (void)hideActivity
{
    dispatch_async(dispatch_get_main_queue(), ^{
        //also remove activity from window
        [_activity stopAnimating];
    });
}

您可以从任何 class:

调用这两个方法
  [(AppDelegate*)[UIApplication sharedApplication].delegate showActivity];