gpt4 book ai didi

Cocoa 绑定(bind)和自定义 NSCell 属性

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

我有一个关于子类 NSCell(复选框单元)的问题。我希望它们在复选标记旁边有一个标题和一个副标题(所以我为它们创建了 NSString 属性)。它们的值应通过绑定(bind)设置(来自 IB 会很棒),但问题来了:

IB 只允许我设置单元格的“值”,在我的例子中为复选标记状态的 BOOL。

哪个类必须绑定(bind)到提供数据的 NSArrayController?似乎细胞本身不能与任何东西绑定(bind)并做类似的事情

[self.subtitle bind:...]

也不起作用。我必须在何时何地进行绑定(bind)?

最好,斯特凡

最佳答案

我假设您在基于单元格的 NSTableView 中执行此操作,因为 NSButtonCell 确实公开了 title 绑定(bind),但它在 NSTableView 的上下文中毫无用处,因为您有绑定(bind) NSTableColumn,并且仅公开包含 NSButtonCells 的 NSTableColumn 的值绑定(bind)。这是该框架的一个缺点,谷歌透露,许多人都在努力解决这个缺点。

一种方法是在 -tableView:dataCellForTableColumn:row:-tableView:willDisplayCell:forTableColumn:row: 委托(delegate)方法中更新模型中的标题。这样做的缺点是当底层模型发生变化时,无法通过 KVO 进行更新。如果这对您的应用程序很重要,一种解决方法是使复选框的 value 的模型 keyPath 依赖于复选框的 title 的模型 keyPath。这样,当标题更改时,KVO 将发送值更改的通知,这将导致重新绘制行,从而通过委托(delegate)方法更新标题。

我注意到这个问题已经很老了,但是现在更简单的方法是使用基于 NSView 的 NSTableViews。完成此操作后,您将使用一流的 NSButton 控件,并且可以使用 Value 和 Title 绑定(bind)(以及许多其他绑定(bind))。假设您不担心支持 Lion 之前的操作系统版本,这通常是一种更可行的方法。

关于Cocoa 绑定(bind)和自定义 NSCell 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5461576/

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