gpt4 book ai didi

objective-c - 从 tableView 返回什么 :objectValueForTableColumn:row:?

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

OSX 上的 Cocoa 编程新手。来自iOS编程。看起来 NSTableView 编程与 UITableView 编程类似。因此,我正在尝试实现 NSTableViewDataSource 协议(protocol)的一部分,但我不知道从 tableView:objectValueForTableColumn:row: 方法返回什么,以便获得在行和列上显示的简单字符串。我用谷歌搜索,浏览了苹果文档,但找不到任何东西。该方法返回类型“id”,因此没有帮助。谢谢。

最佳答案

您返回的对象值取决于 a) 对您的模型有意义,以及 b) 您如何设置表格 View 的单元格 View 。

我假设您正在使用基于 View 的表格 View ,因为您是新手,而且这是现代的方式。因此, TableView 获取 -tableView:objectValueForTableColumn:row: 返回的对象值,并尝试将其设置在单元格 View 上。它检查单元格 View 是否实现了 -setObjectValue:,如果是,则调用它并传递从数据源返回的对象值。

那么,什么类型的 View 支持 -setObjectValue: 以及设置后它们会如何处理它?嗯,任何继承自 NSControl 的 View 都有这样的方法并显示,并且可能让用户编辑该值。此类控件的一个常见示例是 NSTextField。因此,如果您的单元格 View 是 NSTextField 或其他控件,则您的数据源可以返回 NSString 这就足够了。

如果控件具有格式化程序对象(NSFormatter 子类的实例),您的数据源可能会返回某种其他类型的对象,例如 NSNumberNSDate,格式化程序会将其与文本相互转换。

如果您的单元格 View 是 NSTableCellView,则该类也会响应 -setObjectValue:。因此 TableView 将使用从数据源返回的对象值来调用它。但是,NSTableCellView 本质上不会对对象值执行任何操作。它只是持有它。然后您可以做的是通过 objectValue 属性将 subview 绑定(bind)到它。他们将通过绑定(bind)获得他们的值。在这种情况下,数据源可以返回任意对象。 subview 将通过为绑定(bind)选择适当的关键路径来选择要显示和编辑的对象的特定属性。例如,如果您的应用操作 Employee 对象,您的数据源可能会返回该行的 EmployeeNSTableCellView 将保存对其的引用,并且单元格 View 中的文本字段可以使用 objectValue.name 键路径绑定(bind)到 NSTableCellView 以显示员工的姓名。 (您可以使用绑定(bind)选项(例如值转换器或控件上的格式化程序)进一步控制从对象属性到显示值的转换。)

关于objective-c - 从 tableView 返回什么 :objectValueForTableColumn:row:?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29724404/

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