Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sum all values of a textfield of a NSTableView column

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?

like image 943
Ghost108 Avatar asked Nov 08 '22 21:11

Ghost108


1 Answers

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.

like image 161
Mendigo dos Bytes Avatar answered Nov 29 '22 01:11

Mendigo dos Bytes