如何将模型绑定到NSTableView?

时间:2018-01-31 10:26:25

标签: swift

我正在调用委托方法func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView?来加载数据。每次我的模型更改时,我都需要调用NSTableView.reload()来刷新tableView。如何将模型绑定到NSTableView

extension MyViewController: NSTableViewDelegate {
    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
        let identifier = tableColumn?.identifier.rawValue as String?

        if identifier == "AppName" {
            let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "AppName"), owner: self) as! NSTableCellView
            cell.imageView?.image = NSImage(named: NSImage.Name(rawValue: AppData.appList[row]["icon"] as! String))
            cell.textField?.stringValue = AppData.appList[row]["name"] as! String

            return cell
        }

        return nil
    }
}

1 个答案:

答案 0 :(得分:1)

  • 使用NSArrayController
  • 将表格视图的Content绑定到阵列控制器的arrangedObjects(将Model Key Path留空)。
  • 将每个文字字段的Value绑定到Table Cell View> ObjectValue>财产或key

可选地

  • 实施numberOfRowsobjectValueForColumn:row并联系data source
  • 将每个文字字段的Value绑定到Table Cell View> ObjectValue>财产或key
  • 使用insertRowsremoveRows方法插入和删除数据。

强烈建议将自定义类用作模型而不是字典。