sfauthorizationPluginView를 다시 실행합니다
-
21-12-2019 - |
문제
현재 일부 동적 컨텐츠가있는 사용자 정의 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!";
});
. 제휴하지 않습니다 StackOverflow