gpt4 book ai didi

cocoa - 如何为 NSApp.dockTile 创建绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 16:28:16 33 4
gpt4 key购买 nike

在 IB 中,很容易将标签或文本字段绑定(bind)到某些 Controller 的 keyPath。

NSDockTile(可通过 [[NSApp dockTile] setBadgeLabel:@"123"] 获得)不会出现在 IB 中,并且我无法弄清楚如何以编程方式绑定(bind)其“badgeLabel”属性,就像绑定(bind)标签/文本字段一样/表列。

有什么想法吗?

最佳答案

NSDockTile 没有任何绑定(bind),因此您的 Controller 必须手动更新停靠图 block 。您可以使用 KVO 来完成此操作,这与绑定(bind)它具有相同的效果。

创建一个全局上下文:


static void* MyContext=(void*)@"MyContext";

然后,在你的 init 方法中:


[objectYouWantToWatch addObserver:self forKeyPath:@"dockTileNumber" options:0 context:MyContext];

然后,您必须实现此方法才能收到 key 路径更改的通知:

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (context == MyContext) {
[[NSApp dockTile] setBadgeLabel:[object valueForKeyPath:keyPath]];
}
else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}

确保当 Controller 对象消失时删除观察者。

关于cocoa - 如何为 NSApp.dockTile 创建绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/416619/

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