SFAuthorizationPluginViewを再描画します
-
21-12-2019 - |
質問
動的コンテンツ(現在はラベルの形式にある)を持つカスタム認証プラジンを書きます。イベントに応じてラベルを更新できるようにしたいのですが。
次の宣言を想定しています。
-
parent = SFAuthorizationPluginView (subclass)
.-
view = NSView (subclass)
.-
NSTextField *label = ...
-
-
次のようにラベルテキストを編集します(注:これはバックグラウンドディスパッチキューから実行される可能性があります)。
[label setStringValue:@"new text"];
次に、次のものを使用して更新を強制してみてください。
-
[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