I work with swift 3 and I have a NSTableView (3 columns). I fill the data like below:
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
var cellIdentifier = String()
var cellText = String()
switch tableColumn {
case tablewView.tableColumns[0]?:
cellText = "100"
cellIdentifier = "Cell1"
break
case tablewView.tableColumns[1]?:
cellText = "100"
cellIdentifier = "Cell2"
break
case tablewView.tableColumns[2]?:
cellText = "100"
cellIdentifier = "Cell3"
break
default: break
}
if let view = tableView.make(withIdentifier: cellIdentifier, owner: nil) as? NSTableCellView {
view.textField?.stringValue = cellText
return view
}
return nil
}
Now I would like to sum all values of column 1, every time when the selection will change. how can I realize this?
To add the values, you must guarantee that all the values are numbers or, at least, could be converted to numbers.
After that, its necessary to maintain an variable receiving the increment of the values from tablewView.tableColumns[1]?
ex:
var sum = 0
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
var cellIdentifier = String()
var cellText = String()
switch tableColumn {
case tablewView.tableColumns[0]?:
cellText = "100"
cellIdentifier = "Cell1"
break
case tablewView.tableColumns[1]?:
cellText = "100"
sum = sum + Int(cellText)
cellIdentifier = "Cell2"
break
case tablewView.tableColumns[2]?:
cellText = "100"
cellIdentifier = "Cell3"
break
default: break
}
if let view = tableView.make(withIdentifier: cellIdentifier, owner: nil) as? NSTableCellView {
view.textField?.stringValue = cellText
return view
}
return nil
}
So, at viewWillLayout()
you can show the value of sum
variable using some label.
JLU.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With