我正在尝试创建一些方法,我可以在不同的冗长活动中重复启动和停止旋转轮子,例如将表与服务器同步。
我的开始方法:
-(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属性?
感谢您的任何见解。
答案 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];