为什么controlTextDidChange(_ obj:Notification)不适用于label? [苹果系统]

时间:2019-06-19 14:24:45

标签: swift macos cocoa label nstextfield

为什么controlTextDidChange(_ obj:Notification)对标签不起作用?我希望在标签的stringValue更改[macOS]

时调用一个函数

1 个答案:

答案 0 :(得分:2)

controlTextDidChange(以及controlTextDidBeginEditingcontrolTextDidEndEditing)是报告用户对可编辑文本字段发起的更改的委托方法。标签不可编辑,因此永远不会发送这些消息。

如果要通知程序性标签更改,我建议使用绑定。 (我很确定更改标签值会触发值更改通知。我从未用过这种方式,因此您必须进行验证。)

将控件的文本值绑定到对象的string属性可能会更容易(并且我经常这样做)。然后,您可以通过更改该属性来设置标签。需要将此更改通知的其他代码可以观察该属性,或将更新逻辑包装在didSet属性观察器中。