NSTableView 的基本使用

作者: 整个夏天 | 来源:发表于2020-08-19 16:02 被阅读0次

    基本配置初始化

    对应的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 的基本使用

        本文链接:https://www.haomeiwen.com/subject/jnagdktx.html