LoginSignup
18
18

More than 5 years have passed since last update.

NSTableView 列追加、削除

Posted at

最初に

StoryBoard及び、コードの両方から列の追加、削除する方法です
最低限の使い方は、他の方がいくらでも情報載せていただいているのでそちらをご覧ください

Storyboard

TableViewを選択し、Columnsを変更
Main_storyboard_—_Edited.png

TableColumnが追加されている事を確認
Main_storyboard_—_Edited2.png

引き伸ばしてから追加すると見えない位置に生成されるので
追加したカラムの一つ上のカラムのWidthを狭める
Main_storyboard_—_Edited3.png

コード

見て貰えば早いです。

ViewController.swift
//
//  ViewController.swift
//  TestTableView
//

import Cocoa

class ViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource {

    @IBOutlet weak var tableView: NSTableView!

    let columnName: [String] = ["column0", "column1", "column2"]
    let data: [[String]] = [
        ["TEST00", "TEST01", "TEST02"],
        ["TEST10", "TEST11", "TEST12"]
    ]

    override func viewDidLoad() {
        super.viewDidLoad()
        // 一旦、全部削っちゃう
        let tableColumns = tableView.tableColumns as! [NSTableColumn]
        for tc: NSTableColumn in tableColumns {
            tableView.removeTableColumn(tc)
        }

        for _id in columnName {
            var tc: NSTableColumn = NSTableColumn(identifier: _id)
            tc.title = _id
            tableView.addTableColumn(tc)
        }
    }

    override var representedObject: AnyObject? {
        didSet {
        }
    }

    func numberOfRowsInTableView(tableView: NSTableView) -> Int {
        return data.count
    }

    func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject? {
        if let tc: NSTableColumn = tableColumn {
            return data[row][find(columnName, tc.identifier)!]
        }
        return ""
    }
}

このコードの注意点として、StoryBoardから作って、IBOutletで取得して、デリゲートとデータソースはUtilitiesから設定しています。
また、セルにコードから入力する際は、Content ModeをView Basedから
スクリーンショット_2015-05-01_15_28_32.png

Cell Basedにしてください
スクリーンショット_2015-05-01_15_29_59.png

おわりに

コードから列の追加、削除する方法がなかなか見つからなかったので投稿しました。
Swiftで書きましたが、Objective-Cでもできます。

それではまたどこかで

18
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
18