基本配置初始化
对应的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
中完成布局调整
实现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()
}