NSTableView 的基本使用

基本配置初始化

对应的VC实现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"))
    }

创建一个名称为HomeFolderCell自定义的cell,继承于NSTableCellView,在xib中完成布局调整

图片.png

实现NSTableViewDataSource,NSTableViewDelegate的代理方法

    //返回数据有多少条
    func numberOfRows(in tableView: NSTableView) -> Int {
        return AppHelp.help.folderPathArray.count
    }
    //返回每一行的内容
    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 ?? "名字错误"
        
        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

你可能感兴趣的:(NSTableView 的基本使用)