如何在允许多项选择的NSTableView中获取选定的行数据?

时间:2015-08-21 11:10:47

标签: macos swift cocoa nstableview

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

对于获取单行数据,我使用的代码如下

    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)")
            }
       }

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

1 个答案:

答案 0 :(得分:4)

存在API误解:

numberOfSelectedRows返回选择的行数。

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

您可以使用

枚举索引集

Swift 1.2

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

}

Swift 2

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

Swift 3

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

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

中检索数据