IOS / Objective-C:开始和结束uiactivityindicatorview的方法

时间:2016-09-19 20:06:13

标签: ios objective-c uiactivityindicatorview

我正在尝试创建一些方法,我可以在不同的冗长活动中重复启动和停止旋转轮子,例如将表与服务器同步。

我的开始方法:

-(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;
}

我遇到的问题是end方法无法识别start方法中创建的uiactivityidicator。

我应该在房产中保存吗?或者我如何从不同的方法中获取微调器以保存它。

我想在可重复使用的代码中设置它,因为我在不同的视图控制器中有很多表视图,我希望包含这些代码。 tableviews已经有属性,但我是否必须在每个想要包含微调器的视图控制器中设置uiactivityindicator属性?

感谢您的任何见解。

1 个答案:

答案 0 :(得分:0)

在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];
    });
}

你可以从任何一个类调用这两个方法:

  [(AppDelegate*)[UIApplication sharedApplication].delegate showActivity];