목표는 "tableview를 표시하기 전에 데이터를로드하는 viewWillAppear의 시작 부분에서 스피너 그래픽을 시작합니다"이므로 테이블을보기 전에 왜 지연이 발생하는지 궁금하지 않습니다. 나는. UIActivityIndicatorView가 윈도우에 추가되었고, 그냥 숨기거나 보여주기 위해 알파를 설정하려고합니다.크래시 - "Collection <CALayerArray : 0x645dfc0>이 (가) 열거되는 동안 변형되었습니다."
"회전 기어"imageview (tag = 333)가 표시되도록 스레드를 시작할 때이 이상한 오류가 발생하여 viewWillAppear의로드/계산으로 이동하기 전에 이동하십시오.
나는 [appdel addGearz]와 [appdel removeGearz]를 호출 할 때마다 그것을 얻지는 않지만,이 두 가지 모두에 대해 발생하며 무작위입니다. 2 개의 viewWillAppears 이후 또는 15 이후에 발생할 수 있습니다. 알파를 설정하는 행을 주석 처리하면 모든 것이 작동합니다. 전형적인 viewWillAppear 이런 식으로 뭔가를 보이는
, 여기
[super viewWillappear];
[email protected]"Products listing"; //and other simple things
[appdel addGearz];
[self getProducts];
[self getThumbnails];
[myTableView reloadData]; //in case view already loaded and coming back from subview and data changed
그리고는 (α)와 선이
-(void)addGearz {
[NSThread detachNewThreadSelector:@selector(gearzOn) toTarget:self withObject:nil];
}
-(void)removeGearz {
[NSThread detachNewThreadSelector:@selector(gearzOff) toTarget:self withObject:nil];
}
- (void)gearzOn {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[window viewWithTag:333].alpha=1.0;
//
// [[window viewWithTag:333] setNeedsDisplay];
[pool drain];
}
- (void) gearzOff {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[window viewWithTag:333].alpha=0.0;
//
// [[window viewWithTag:333] setNeedsDisplay];
[pool drain];
}
을 주석 처리되지 않습니다 내가 다른 사람의 코드를 사용한 경우 충돌 코드입니다 , 그래서 ... 당신이 볼 수있는 명백한 무엇인가? 확실하게 스레드에서 UIView의 알파를 변경할 수 있어야합니까? 일부는 "내가 이것을 변경하는 동안 열거 중지"코드에 알파 변경을 "포함"해야합니까?
알파 변경 라인을 풀 alloc 이상 또는 [pool drain] 아래로 옮겨서 충돌을 일으키지 않았지만, "풀 리졸버없이 자동으로 리 레이됩니다."- 메시지 만 남김 .
분명히,이 스레드 코드에 대해 이해할 수없는 것이 있습니다.
[self performSelectorOnMainThread : @selector (gearzOn) withObject : nil waitUntilDone : YES]; 뷰를 푸시하기 전에 viewWillAppear가 모든로드를 수행하므로 사용자는 어떤 일이 발생하고 있음을 인식해야합니다. –
[window setNeedsDisplay]와 함께 표시되지 않았습니다. 어느 한 쪽. 하지만 알파 UIAnimation을 사용하면 효과적입니다. (빠른 페이드.) 그게 왜 작동하지만 알파를 설정하고 창문을 업데이 트 묻는 모든 아이디어? 당신의 대답을 정확하다고 표시 할 것이고, 그것은 문제를 해결할 것입니다. 감사! –
레이어의 표시 대기열과 애니메이션이 처리되는 방식과 관계가 있다고 생각합니다. UIAnimation이 트릭을 수행했음을 아는 것이 좋습니다. –