문제

현재 일부 동적 컨텐츠가있는 사용자 정의 AuthenticationPlugin을 작성합니다 (현재 레이블 형식의 형태). 이벤트에 대한 응답으로 레이블을 업데이트 할 수 있기를 원합니다.

다음 선언을 가정합니다.

  • parent = SFAuthorizationPluginView (subclass).
    • view = NSView (subclass).
      • NSTextField *label = ...

다음과 같이 레이블 텍스트를 편집합니다 (참고 : 이것은 백그라운드 파견 대기열에서 실행될 수 있음) :
[label setStringValue:@"new text"];

i 다음을 사용하여 업데이트를 강제로 강제로 시도합니다.

  • [label setNeedsDisplay:YES];
  • dispatch_async(dispatch_get_main_queue(), ^{ [label setNeedsDisplay:YES]; });
  • [label display];
  • dispatch_async(dispatch_get_main_queue(), ^{ [label display]; });
  • [[label cell] update];
  • dispatch_async(dispatch_get_main_queue(), ^{ [[label cell] update]; });
  • [[label cell] needsDisplay];
  • dispatch_async(dispatch_get_main_queue(), ^{ [[label cell] needsDisplay]; });
  • [view setNeedsDisplay:YES];
  • dispatch_async(dispatch_get_main_queue(), ^{ [view setNeedsDisplay:YES]; });
  • [self updateView];
  • dispatch_async(dispatch_get_main_queue(), ^{ [self updateView]; });
  • [self displayView]
  • dispatch_async(dispatch_get_main_queue(), ^{ [self displayView]; });

그러나 나는 아무런 조치가없고 회색 화면이 깜박임 (예외를 일으킨 것을 나타내는 것을 나타내는 것을 나타내는)

아이디어가 있습니까? (참고 : 다양한 옵션을 시도 할 때이 질문을 편집 할 것입니다)

도움이 되었습니까?

해결책

나는 이와 같은 주 대기열 코드에 레이블을 업데이트해야한다고 생각합니다.

dispatch_async(dispatch_get_main_queue(), ^{
 label.text = "Hello World!";
});
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top