我複製了代碼以顯示此post的活動指示器。當我打電話給hideActivityViewer
時,什麼也沒有發生,activityView
仍然存在,activityIndicator仍在旋轉。就好像hideActivityViewer
完全不會對activityView
做任何事情。無法從屏幕上刪除UIActivityIndicator和包含它的視圖
這裏是我已經修改
-(void)showActivityViewer
{
WBAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
UIWindow *window = delegate.window;
_activityView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, window.bounds.size.width, window.bounds.size.height)];
_activityView.backgroundColor = [UIColor blackColor];
_activityView.alpha = 0.5;
UIActivityIndicatorView *activityWheel = [[UIActivityIndicatorView alloc] initWithFrame: CGRectMake(window.bounds.size.width/2 - 12, window.bounds.size.height/2 - 12, 24, 24)];
activityWheel.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
activityWheel.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleBottomMargin);
[_activityView addSubview:activityWheel];
[window addSubview: _activityView];
[[[_activityView subviews] objectAtIndex:0] startAnimating];
}
-(void)hideActivityViewer
{
NSLog(@"Profile: hiding Activity Viewer");
[[[_activityView subviews] objectAtIndex:0] stopAnimating];
[_activityView removeFromSuperview];
_activityView = nil;
}
代碼更新: 我使用的是國際志願者組織,以檢測在變量的變化,並用它來打電話showActivityViewer
。 原來,showActivityViewer
被多次調用,結果在屏幕上有多個activityViewer
,所以當我刪除一個時,另一個仍然存在,我沒有參考它。我通過檢查activityView
是否已經存在解決了這個問題,如果沒有,請創建一個新的。
你是怎麼聲明activityView的? – rdelmar
這可能是因爲'activityView'在調用'hideActivityViewer'之前的某個時刻變成了零。假設你兩次調用'showActivityViewer',你有兩個'activityView'完全相互重疊,如果你調用'hideActivityViewer',第一個將永遠不會被隱藏。即使在匹配了一些「hideActivityViewer」調用之後,甚至更多。 – Rajiv
你在哪裏調用'hideActivityViewer'?你在控制檯中看到「NSLog()」結果嗎? – Justin