我正在编写一个自定义的 AuthenticationPlugin,其中包含一些动态内容(当前以标签的形式)。我希望能够更新标签以响应事件。
假设有以下声明:
parent = SFAuthorizationPluginView(子类)
view = NSView(子类)
NSTextField *label = ...
我按如下方式编辑标签文本(注意:这可以从后台调度队列执行):
[label setStringValue:@"新文本"];
然后我尝试使用以下命令强制更新:
[标签setNeedsDisplay:YES];
dispatch_async(dispatch_get_main_queue(), ^{ [label setNeedsDisplay:YES]; });
[标签显示];
dispatch_async(dispatch_get_main_queue(), ^{ [标签显示]; });
[[标签单元]更新];
dispatch_async(dispatch_get_main_queue(), ^{ [[标签单元格]更新]; });
[[标签单元格] needDisplay];
dispatch_async(dispatch_get_main_queue(), ^{ [[标签单元格] needDisplay]; });
[view setNeedsDisplay:YES];
dispatch_async(dispatch_get_main_queue(), ^{ [view setNeedsDisplay:YES]; });
[ self 更新 View ];
dispatch_async(dispatch_get_main_queue(), ^{ [self updateView]; });
[ self 显示 View ]
dispatch_async(dispatch_get_main_queue(), ^{ [self displayView]; });
但是,我得到的结果是没有任何操作和闪烁的灰屏(表明我引起了异常)。
有什么想法吗? (注意:当我尝试各种选项时,我将编辑这个问题)
最佳答案
我认为您需要做的就是将标签的更新放入主队列代码中,如下所示:
dispatch_async(dispatch_get_main_queue(), ^{
label.text = "Hello World!";
});
关于objective-c - 重绘 SFAuthorizationPluginView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24028742/