- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试观察 Swift 4 中 NSPopUpButton 选择的变化。在我的 View Controller 的 viewDidLoad() 中,我设置了观察标记以观察 NSPopUpButton 的 selectedItem 属性
override func viewDidLoad() {
super.viewDidLoad()
observation = observe(\.myPopUpButton.selectedItem) {
objectToObserve, change in
if change.kind == NSKeyValueObservedChange.Kind.setting {
// code to execute goes here
}
}
我在设置了 observation
的行上设置了一个断点,以确定 token 是使用正确的 key 路径配置的。我还在闭包内设置了一个 break 以查看它何时执行。当我更改 NSPopUpButton 的选择时,闭包不会执行。
selectedItem
的类型是 NSMenuItem?
,所以我怀疑我无法对可选属性设置观察。但我在 Apple 的文档中找不到任何说明是否属于这种情况的内容,而且我不确定我将如何为自己进行验证。
所以我有一些主要问题和一些后续问题:
我已经尝试过的故障排除...
@objc dynamic
添加到我的 myPopUpButton
声明最佳答案
许多 AppKit 对象的许多属性不符合 KVO。除非文档明确说明该属性是合规的,否则您应该假定它不合规。 NSPopUpButton
的 selectedItem
属性不合规。
通知弹出按钮的选定项更改的最简单方法是设置按钮的target
和action
:
override func viewDidLoad() {
super.viewDidLoad()
myPopUpButton.target = self
myPopUpButton.action = #selector(popUpButtonDidFire(_:))
}
@IBAction private func popUpButtonDidFire(_ sender: Any) {
// code to execute goes here
}
请注意,如果您在 Storyboard 或 xib 中创建弹出按钮,您可以通过控制从弹出按钮拖动到 View Controller 来将其连接到 popUpButtonDidFire
方法.
关于swift - 我可以快速观察可选值吗?如果不是,我将如何尝试观察变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49414984/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!