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
전화를 사용하는 KVO를 사용하고 있습니다.
showActivityViewer
가 두 번 이상 호출되었으므로 화면에 복수
activityViewer
이 표시됩니다. 따라서 하나를 제거하면 다른 하나는 계속 남아 있고 참조 할 필요가 없습니다. 나는
activityView
가 이미 존재하는지 검사하고, 그렇다면 새로운 것을 만들지 않음으로써이를 해결했다.
activityView를 어떻게 선언하셨습니까? – rdelmar
'hideActivityViewer'를 호출하기 전에 어떤 시점에서'activityView'가 nil이되기 때문일 수 있습니다. 'showActivityViewer'를 두 번 호출하면, 두 개의'activityView'가 정확히 서로 위에 있고'hideActivityViewer'를 호출하면 첫 번째 것은 결코 숨겨지지 않을 것입니다. 'hideActivityViewer' 호출과 일치하는 숫자 이상이 된 후에도. – Rajiv
어디에서'hideActivityViewer'를 호출합니까? 콘솔에'NSLog()'결과가 보입니까? – Justin