【问题标题】:Can I get the column index in -tableView:objectValueForTableColumn:row:我可以在 -tableView:objectValueForTableColumn:row 中获取列索引吗:
【发布时间】:2015-03-17 12:36:55
【问题描述】:

能否从数据源方法中获取当前列索引:

-tableView:objectValueForTableColumn:row:

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

    您可以在 NSTableView 列中搜索给定的 NSTableColumn...

    - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
        NSUInteger index = [[aTableView tableColumns] indexOfObject:aTableColumn];
        ...
    }
    

    【讨论】:

    • 我永远无法理解为什么 Apple 让最简单的事情变得如此不直观!感谢您的回答。
    • 该方法现在称为 indexOfObject
    • 您应该依靠 tableComumn.identifier 来识别列。这不受用户表布局更改的影响,并且在您不需要保持与数据模型相对应的表列布局的未来开发中更安全。
    【解决方案2】:

    如果有人在 Swift 中搜索这样的实现,你可以这样做。

    func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
        if let tableColumn = tableColumn,
           let index = tableView.tableColumns.firstIndex(of: tableColumn) {
            // Do your things with index
        }
        return nil // or return your object
    }
    

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 2010-11-15
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多