NSTableView 的基本使用

基本配置初始化

對應(yīng)的VC實(shí)現(xiàn)NSTableViewDataSource,NSTableViewDelegate代理,初始化tableView

    private func initTableView(){
        tableView.delegate = self
        tableView.dataSource = self
        tableView.rowHeight = 67
        tableView.register(NSNib.init(nibNamed: NSNib.Name("HomeFolderCell"), bundle: nil), forIdentifier: NSUserInterfaceItemIdentifier(rawValue: "HomeFolderCellId"))
    }

創(chuàng)建一個(gè)名稱為HomeFolderCell自定義的cell,繼承于NSTableCellView,在xib中完成布局調(diào)整

圖片.png

實(shí)現(xiàn)NSTableViewDataSource,NSTableViewDelegate的代理方法

    //返回?cái)?shù)據(jù)有多少條
    func numberOfRows(in tableView: NSTableView) -> Int {
        return AppHelp.help.folderPathArray.count
    }
    //返回每一行的內(nèi)容
    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
        let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "HomeFolderCellId"), owner: nil) as? HomeFolderCell
        cell?.nameLabel.stringValue = AppHelp.help.folderPathArray[row].components(separatedBy: "/").last ?? "名字錯(cuò)誤"
        
        return cell
    }
    //選中某一行
    func tableViewSelectionDidChange(_ notification: Notification) {
        let row = tableView.selectedRow
    }

添加右鍵單擊菜單功能

    var tableViewMenu = NSMenu(title: "刪除")
    tableView.menu = tableViewMenu
    tableViewMenu.delegate = self
    //MARK:NSMenuDelegate
    func menuNeedsUpdate(_ menu: NSMenu) {
        menu.removeAllItems()
        menu.addItem(NSMenuItem(title: "刪除", action: #selector(deleteFolter(_:)), keyEquivalent: ""))
        
    }
    
    
    @objc func deleteFolter(_ item:NSMenuItem){
        let row = tableView.clickedRow
        AppHelp.help.delFolder(row)
        tableView.reloadData()
    }
圖片.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容