Cocoa表视图复选框状态在滚动时丢失



我有一个带有复选框的viewbase表视图。我为instantableviewcell创建了自定义类,以操作每行的复选框。

问题是当我在表视图中选中多个复选框并向下滚动时。然后我向后滚动,复选框状态消失了,尽管所选数据在数组中。

这是我的表视图

else if tableView.tag == 2{
if (tableColumn?.identifier)!.rawValue == "AlbumColumn" .   {
if let cell: MyCustomViewCell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "AlbumColumn"), owner: self) as? MyCustomViewCell
{
cell.AlbumCbx.state = NSControl.StateValue(rawValue: 0)
cell.AlbumCbx.title = albums[row]!
cell.onClickAlbumCbx = { sender in
if !selected_album.isEmpty{
if cell.AlbumCbx.state.rawValue == 1{
selected_album.append(albums[row]!)
} else {
selected_album = selected_album.filter({ $0 != albums[row]! })
}
}
}
return cell
}
}
}

我在谷歌和stackoverflow上搜索过,我找到了解决这个问题的方法:

func tableView(_ tableView: NSTableView, rowViewForRow row:Int) -> NSTableRowView? {
}

虽然我不知道如何实现这个方法。

我这样写,它就像一个魅力

cell.AlbumCbx.state = NSControl.StateValue(rawValue: 0)
for s in selected_album{
if cell.AlbumCbx.title == s
{
//print(true, cell.AlbumCbx.title)
cell.AlbumCbx.state = NSControl.StateValue(rawValue: 1)    
}
}

最新更新