- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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
子类的实例),您的数据源可能会返回某种其他类型的对象,例如 NSNumber
或 NSDate
,格式化程序会将其与文本相互转换。
如果您的单元格 View 是 NSTableCellView
,则该类也会响应 -setObjectValue:
。因此 TableView 将使用从数据源返回的对象值来调用它。但是,NSTableCellView
本质上不会对对象值执行任何操作。它只是持有它。然后您可以做的是通过 objectValue
属性将 subview 绑定(bind)到它。他们将通过绑定(bind)获得他们的值。在这种情况下,数据源可以返回任意对象。 subview 将通过为绑定(bind)选择适当的关键路径来选择要显示和编辑的对象的特定属性。例如,如果您的应用操作 Employee
对象,您的数据源可能会返回该行的 Employee
,NSTableCellView
将保存对其的引用,并且单元格 View 中的文本字段可以使用 objectValue.name
键路径绑定(bind)到 NSTableCellView
以显示员工的姓名。 (您可以使用绑定(bind)选项(例如值转换器或控件上的格式化程序)进一步控制从对象属性到显示值的转换。)
关于objective-c - 从 tableView 返回什么 :objectValueForTableColumn:row:?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29724404/
关于outlineView:objectValueForTableColumn:byItem:数据源方法,文档中有注释说: While this method is marked as @option
我有一个带有单列的 NSTableView,它通过绑定(bind)到核心数据实体的 NSArrayController 获取其数据。数据源工作得很好,我已经能够通过实现这些方法来进行拖放工作 –num
我目前正在阅读由 Big Nerd Ranch 提供的 Mac OSX Cocoa 书的第三版,并且我正在编辑我的程序以包含表格 View 。这里是 AppController.m 文件中的代码,我必
我正在尝试以编程方式设置 NSTableView(我确实需要避免使用 IB),并且我找到的所有示例都解释了如何使用界面构建来执行此操作。我创建了一个 Controller 类,它实现了 tableVi
OSX 上的 Cocoa 编程新手。来自iOS编程。看起来 NSTableView 编程与 UITableView 编程类似。因此,我正在尝试实现 NSTableViewDataSource 协议(p
我正在尝试为新程序创建源列表,但在使用基于 View 的 NSOutlineView 时遇到了一些小问题。我的代码使用基于单元格的 NSOutlineView 工作正常,所以我对发生的事情有点困惑。
在尝试创建基于 View 的表时,它不断调用 objectValueForTableColumn 函数而不是 viewForTableColumn。 我已在其设置中将 TableView 设置为“基于
我可以从数据源方法中获取当前列索引吗: -tableView:objectValueForTableColumn:row: 最佳答案 您可以在 NSTableView 列中搜索给定的 NSTableC
在NSTableViewDataSource ,概述表明 tableView:objectValueForTableColumn:row: 是“必需的”。 紧接着,它说 tableView:setOb
知道哪一行很简单,因为我得到了 rowIndex 参数,但是如何找到哪一列正在调用您的方法? 最佳答案 您将在 tableColumn 参数中传递一个 NSTableColumn 对象。您可以使用其i
我有这个代码: - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableCol
我是一名优秀的程序员,十分优秀!