Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos NSButton在设置透明:否设置启用:是后高亮显示_Macos_Cocoa_Cocoa Bindings - Fatal编程技术网

Macos NSButton在设置透明:否设置启用:是后高亮显示

Macos NSButton在设置透明:否设置启用:是后高亮显示,macos,cocoa,cocoa-bindings,Macos,Cocoa,Cocoa Bindings,我有两个NSButtons,它们都是带边框的瞬时推入式按钮。我有一个主窗口,其他视图可以在其中交换。这两个按钮位于主窗口“自定义视图”(下一个、上一个)中,有助于在视图中导航 当我在“下一步”按钮的帮助下到达2视图时,我会启用并显示上一个按钮。因此,如果我在这一点上按下“上一个”按钮,第一个视图将被交换,我将使“上一个”按钮透明并启用 此时,如果按“下一步”按钮导航到第二个视图,则第二个视图将被切换,并再次显示“上一个”按钮。但它在这里突出显示。我怎样才能解决这个问题呢?我希望您能得到一些更好的

我有两个
NSButton
s,它们都是带边框的瞬时推入式按钮。我有一个主窗口,其他视图可以在其中交换。这两个按钮位于主窗口“自定义视图”(下一个、上一个)中,有助于在视图中导航

当我在“下一步”按钮的帮助下到达2视图时,我会启用并显示上一个按钮。因此,如果我在这一点上按下“上一个”按钮,第一个视图将被交换,我将使“上一个”按钮透明并启用


此时,如果按“下一步”按钮导航到第二个视图,则第二个视图将被切换,并再次显示“上一个”按钮。但它在这里突出显示。我怎样才能解决这个问题呢?

我希望您能得到一些更好的答案,但我发现在这种情况下,一种通用的方法是等待启用/禁用操作,直到视图的新配置解决为止

毕竟(如果我已经正确地阅读了你的描述),你在自己的动作处理器中间隐藏了一个按钮。 通过在主线程的运行循环的下一次调用(或者更准确地说,在以后的调用)上分派启用/禁用代码,可以很容易地实现延迟:

dispatch_async(dispatch_get_main_queue(), ^{

    // Enable or disable your buttons here.
});
作为一种解决方案,它有点像黑客,但另一方面,在重新配置导航UI之前,等待主视图不再处于变化状态,这并不是一种坏方法