基本配置初始化
對應(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