可可表视图复选框状态滚动丢失

时间:2018-07-20 17:31:26

标签: swift cocoa checkbox tableview state

我有一个带复选框的viewbase tableview。我为nstableviewcell创建了自定义类,以操纵每行的复选框。

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

这是我的表视图

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
            }
        }
    }

我在Google和stackoverflow上进行了搜索,我找到了解决此问题的方法:

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

}

尽管我不知道该方法的实现。

1 个答案:

答案 0 :(得分:0)

我这样写,像魅力一样

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)    
        }
    }