【问题标题】:Possible to use NSView subclass in NSTableView?可以在 NSTableView 中使用 NSView 子类吗?
【发布时间】:2014-08-07 15:11:56
【问题描述】:

我有一个NSView 子类,我想在NSTableView 中使用它。通常我当然会使用NSTableCellView 子类,但这个视图将在其他地方使用。

可能吗?

【问题讨论】:

  • 这样做有什么意义?您的自定义视图可以是 NSTableCellView 的子视图??

标签: cocoa nstableview nsview


【解决方案1】:

用于基于视图的表格视图的单元格视图不要求是NSTableCellView 或子类。使用其他视图对象的实例是完全可以的。例如,NSTextField 开箱即用。

您的表视图委托的-tableView:viewForTableColumn:row: 方法可以根据行配置视图。或者,您的视图可以实现 objectValue 属性(使用 -setObjectValue: 设置器)。在这种情况下,表格视图会将您的数据源从其-tableView:objectValueForTableColumn:row: 方法返回的任何对象值转发到您视图的objectValue 属性。

此外,如果您的视图类具有 textFieldimageView 属性(如 NSTableCellView 那样),那么在某些情况下将特别处理这些属性。例如,文本字段将是单元格的可访问性字符串。

基本上,NSTableCellView 的所有行为都是可推广的。框架并不是特别对待这个类。它提供了适当的属性和方法,任何具有相同属性和方法的视图都可以复制它的行为。

【讨论】:

    【解决方案2】:

    将您的NSView 子类更改为从NSTableCellView 继承而不是NSView,因为NSTableCellView 也从NSView 继承。

    【讨论】:

    • 我很欣赏 Ken 的回答,但这是最简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2012-11-18
    • 2019-02-05
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多