【问题标题】:How to get selected row data in NSTableView where multiple selection is allowed?如何在允许多选的 NSTableView 中获取选定的行数据?
【发布时间】:2015-08-21 11:10:47
【问题描述】:

我有一个允许多选的 NSTableView。现在,当用户选择多行并单击按钮时,我需要获取所有选定的行值。请帮忙!

为了获取单行数据,我使用如下代码

    var row = tableViewOutlet.selectedRow
    var column = tableViewOutlet.tableColumnWithIdentifier("EmpName")
    var cell: AnyObject? = column?.dataCellForRow(row)
    println("Cell Value - \(cell!.stringValue)")

但我希望它用于循环中的多行

我写的代码如下

for (var i = 0; i < tableViewOutlet.numberOfSelectedRows; ++i) {

            if(tableViewOutlet.isRowSelected(i))
            {
                var row = tableViewOutlet.selectedRow
                var column = tableViewOutlet.tableColumnWithIdentifier("EmpName")
                var cell: AnyObject? = column?.dataCellForRow(row)
                println("Selected Emp Name - \(cell!.stringValue)")
            }
       }

但它只给了我最后选择的行值。告诉我哪里出错了。

【问题讨论】:

    标签: macos swift cocoa nstableview


    【解决方案1】:

    有一个API误解:

    numberOfSelectedRows 返回选择了多少行。

    使用selectedRowIndexes,它返回一个包含所选行索引的NSIndexSet 实例

    你可以用

    枚举索引集

    斯威夫特 1.2

    for (_, index) in enumerate(tableViewOutlet.selectedRowIndexes)
    {
    
    }
    

    斯威夫特 2

    for (_, index) in tableViewOutlet.selectedRowIndexes.enumerate() {}
    

    斯威夫特 3+

    for (_, index) in tableViewOutlet.selectedRowIndexes.enumerated() {}
    

    但我会从表格视图数据源而不是表格单元格中检索数据

    【讨论】:

    • 这段代码在 Swift 3 中工作,只有一个变化:for (_, index) in nearTableView.selectedRowIndexes.enumerated() 我不明白语法,但是,for (_, index) 我很感激代码,但有人可以解释下划线?
    • @CraigSmith enumerate 是符合SequenceType 的所有集合类型的通用函数。它返回一个包含对(element, index)SequenceType,并且该元素未在NSIndexSet 中使用。下划线代表不关心
    • 美丽。谢谢你,斯特凡。
    • @vadian 我认为SequenceType 上的enumerate 将返回(index, element)(实际元素是第二个)。 index 不是行号,element 包含行号。更像(i, rowIndexElement),其中i 只是selectedRowIndexes 中行号的位置。为什么不直接使用forEachtableViewOutlet.selectedRowIndexes.forEach { (row: Int) in print("Row: \(row)") }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2018-04-24
    • 2012-11-13
    • 2015-01-10
    相关资源
    最近更新 更多