인터넷에서 데이터를 구문 분석하는 동안 회전 작동 표시기 (UIActivityIndicatorView)를 내 앱에 추가하려고합니다. IB에있는 UIActivityIndicatorView에 연결된 IBOutlet (회 전자)이 있습니다. 처음에는 다음과 같이 설정했습니다 :활동 표시기가 회전하지 않습니다.
-
(void) function {
self.spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhite];
self.spinner.hidesWhenStopped = YES;
[spinner startAnimating];
//parse data from internet
[spinner stopAnimating];}
하지만 회 전자는 회전하지 않습니다. 나는 그것이 같은 스레드에있는 모든 것과 관련이 있다는 것을 읽었습니다. 그래서 이것을 시도 :
- (void) newFunction {
self.spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhite];
self.spinner.hidesWhenStopped = YES;
[spinner startAnimating];
[NSThread detachNewThreadSelector: @selector(function) toTarget: self withObject: nil];
[spinner stopAnimating];}
하지만 여전히 행운. 어떤 아이디어? 감사.
+ 1 정답은 주 스레드에서 시작한 직후에 애니메이션을 멈추기 때문에 그가 아무 것도 보지 못하는 이유가 있다는 추가 정보가 있습니다. performSelectorOnMainThread : withObject : waitUntilDone :을해야하는 이유는 모든 UI 관련 활동이 주 스레드에서 발생하기 때문입니다. 그러나 스피너의 시작/중지는 다른 스레드 내에서 발생해야합니다. – jer