gpt4 book ai didi

objective-c - 重绘 SFAuthorizationPluginView

转载 作者:行者123 更新时间:2023-12-03 17:39:14 25 4
gpt4 key购买 nike

我正在编写一个自定义的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com