我的Mac幻灯片应用程序工具栏中的按钮存在一些问题。
我希望在没有活动幻灯片时禁用这些按钮,并在有活动幻灯片时启用这些按钮。为了实现这一点,我在开始时将按钮'isEnabled
属性设置为false
(我已经尝试了Interface Builder和我的窗口的windowDidLoad
),然后在{{1}中我的幻灯片变量我执行以下操作:
didSet
发生的事情是按钮(本例中只有一个)启用了大约半秒钟然后再次禁用。
我在var slideshow: Slideshow? {
didSet {
self.playPauseButton.isEnabled = slideshow != nil
}
}
上设置了一个断点,以确认幻灯片在某些时候未设置为didSet
。我也没有修改代码中其他地方的nil
。为了进行测试,我设置了isEnabled
而不是isEnabled = true
只是为了看看会发生什么,然后结果显示按钮保持启用状态。
可能有一些AppKit因为某些我不知道的原因而自动禁用按钮?我希望有人可能有个主意。
答案 0 :(得分:1)
好的,我设法解决了这个问题。
确实证明了NSToolbarItems的验证问题,如暗示链接的问题。但是,简单地覆盖我的NSWindowController子类中的函数HAVING
没有完成任务,因为没有为其中包含视图的NSToolbarItem调用该函数(see Apple's documentation)。
为了解决这个问题,我必须继承NSToolbarItem,并覆盖其validateToolbarItem
函数,在其目标上调用validate
,如问题here的答案中所述。