iphone – networkActivityIndi??catorVisible
发布时间:2020-12-14 19:00:04 所属栏目:百科 来源:网络整理
导读:此代码与networkActivityIndi??catorVisible一起使用是否正确? - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; UIApplication* app2 = [UIApplication sharedApplication]; app2.networkActivityIndicatorVisible = YES; [self
此代码与networkActivityIndi??catorVisible一起使用是否正确?
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; UIApplication* app2 = [UIApplication sharedApplication]; app2.networkActivityIndicatorVisible = YES; [self loadSources]; // Loads data in table view app2.networkActivityIndicatorVisible = NO; } 张志贤 解决方法
由于NetworkActivityIndi??catorVisible可以在连接仍处于活动状态时从多个点设置,因此您需要跟踪启用/禁用它的调用数.以下UIApplication类别仅使用静态变量:
// file UIApplication+NetworkActivity.h @interface UIApplication (NetworkActivity) - (void)showNetworkActivityIndicator; - (void)hideNetworkActivityIndicator; @end // file UIApplication+NetworkActivity.m #import "UIApplication+NetworkActivity.h" static NSInteger activityCount = 0; @implementation UIApplication (NetworkActivity) - (void)showNetworkActivityIndicator { if ([[UIApplication sharedApplication] isStatusBarHidden]) return; @synchronized ([UIApplication sharedApplication]) { if (activityCount == 0) { [self setNetworkActivityIndicatorVisible:YES]; } activityCount++; } } - (void)hideNetworkActivityIndicator { if ([[UIApplication sharedApplication] isStatusBarHidden]) return; @synchronized ([UIApplication sharedApplication]) { activityCount--; if (activityCount <= 0) { [self setNetworkActivityIndicatorVisible:NO]; activityCount=0; } } } @end 现在在您的客户端代码中导入UIApplication NetworkActivity.h并调用 // on connection started: [[UIApplication sharedApplication] showNetworkActivityIndicator]; // on connection finished: [[UIApplication sharedApplication] hideNetworkActivityIndicator]; 如果您担心指示灯只闪烁一秒钟,则不需要后台处理.只需调用[self performSelector:@selector(loadSources)withObject:Nil afterDelay:0.1],这样UI线程就有时间在阻塞主线程之前启动网络指示器动画. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |