Uitableviewcell 应该知道它是否在应用程序加载时被选中 - iOS swift

Tableviewcell should know if it is selected on app load in - iOS swift

我用假值和真值构建一个开关,每当我 select 我的表格视图中的一个单元格时。现在工作正常。但是在应用程序加载时,单元格不知道它之前已经被 selected。我正在根据保存的开关数据更改负载单元格,因此它看起来像是一个 selected 单元格。当我点击单元格时。它的行为就像我第一次按下它一样。所以它不首先使用 deselect 函数。并再次从 selecting 单元格开始,这对用户来说并不好。我尝试在 true 上使用 setSelected。但这对我没有用。

我想我在这里遗漏了一些东西...感谢任何帮助:)

if boolTest?.boolValue == true {
        println("its true")
        cell.accessoryType = UITableViewCellAccessoryType.Checkmark
        cell.tintColor = UIColor(red:0.13, green:0.13, blue:0.13, alpha:1)
    }
    else {
        println("its false")
        cell.accessoryType = UITableViewCellAccessoryType.None
    }

您不应尝试通过调用 setSelected 自行设置单元格的选定状态。 tableView 维护自己的一组选定 indexPaths,因此当单元格被重用时,适当的行将保持选定状态。

区别很重要,因为与 tableView 相比,当 tableView 准备显示单元格的(选定的)时,tableView 知道是否选择了 indexPath ) 外观。

如果您希望单元格仅显示为已选中,您可以在 willDisplayCell 中调用 setSelected

如果您希望 tableView 知道单元格已被选中,以便它可以为您处理取消选中的单元格,请使用 selectRowAtIndexPath

这是我所做的更改。现在它知道什么时候被选中了。

if boolTest?.boolValue == true {
        println("its true")
        cell.accessoryType = UITableViewCellAccessoryType.Checkmark
        cell.tintColor = UIColor(red:0.13, green:0.13, blue:0.13, alpha:1)
        tableView.selectRowAtIndexPath(indexPath, animated: false, scrollPosition: UITableViewScrollPosition.None)
    }
    else {
        println("its false")
        cell.accessoryType = UITableViewCellAccessoryType.None
    }