[英]add activity indicator to star and stop when network activity star and stop
我正在開發一個使用Parse Backends的iOS應用程序,並且我想在網絡狀態中的網絡活動開始時,在導航欄中顯示Acctivity Indicator以激活動畫,以便在網絡中停止活動時在導航欄中停止為我的Activity指示器設置動畫。狀態欄。
self.navigationController.navigationBar.barTintColor = BLUE_COLOR; self.navigationItem.title = @“ MyAppname”;
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
[self navigationItem].rightBarButtonItem = barButton;
activityIndicator.hidesWhenStopped = YES;
//[activityIndicator startAnimating];
self.photoArray =[[NSMutableArray alloc]init];
PFQuery* curQuery = [UserParseHelper query];
[curQuery whereKey:@"username" equalTo:[UserParseHelper currentUser].username];
[curQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
self.mainUser = objects.firstObject;
if (self.mainUser.geoPoint != nil) {
[self queryParseMethod];
} else {
[self currentLocationIdentifier];
}
}];
if ([PFUser currentUser]) {
PFQuery *usr = [UserParseHelper query];
[usr whereKey:@"objectId" equalTo:[UserParseHelper currentUser].objectId];
[usr findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
self.userStart = [UserParseHelper alloc];
self.userStart = objects.firstObject;
self.userStart.online = @"yes";
[self.userStart saveEventually];
}];
}
self.segmentedControl.selectedSegmentIndex = 2;
}
解析調用是同步的,這意味着它們與應用中發生的其他事件同時發生,而不是線性發生。 當您調用[curQuery findObjectsInBackground...
,您的主線程將創建一個新線程來進行服務器調用,並最終在您的塊中運行該東西。 然后,在執行該塊之前,主線程立即轉到if ([PFUser currentUser]) {
行。
您需要執行[activityIndicator startAnimating];
在您的回調塊之后,您在回調塊中要做的第一件事是[activityIndicator stopAnimating];
但是,您可能會在第一個startAnimating
調用之前進行第二個stopAnimating
調用,這會產生意外的后果,即過早地終止activityIndicator。 您將必須找到一種方法來跟蹤正在使用該activityIndicator的事物。 即,創建一個int存儲使用activityIndicator多少東西。 如果它是0,並且您嘗試啟動指示器,則增加並啟動指示器。 如果它> 0,請增加它,因為它已經在運行。 執行相反的操作以停止活動指示器。 如果> 1,則將int遞減。 如果它== 1,則減為0並停止活動指示器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.