Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 具有单选和多选功能的uitableview_Ios_Swift_Uitableview - Fatal编程技术网

Ios 具有单选和多选功能的uitableview

Ios 具有单选和多选功能的uitableview,ios,swift,uitableview,Ios,Swift,Uitableview,我有一个tableview,它有三个部分 第0、1节:在节中选择一行。选中的行将获得选中标记。如果选择了新行,则取消选择并取消选中旧选择 第2节:按本节中的一键可自动切换 问题是,当我按下第2节中的一行时,会出现一个复选标记,然后它会继续。我根本不想出现复选标记,但我很难找到摆脱它的方法 我在viewDidLoad中设置self.tableView.allowsMultipleSelection=true,这样我可以在每个部分中选择一行,这对于前两个部分非常有用 然后在cellForRowAt中

我有一个tableview,它有三个部分

第0、1节:在节中选择一行。选中的行将获得选中标记。如果选择了新行,则取消选择并取消选中旧选择

第2节:按本节中的一键可自动切换

问题是,当我按下第2节中的一行时,会出现一个复选标记,然后它会继续。我根本不想出现复选标记,但我很难找到摆脱它的方法

我在viewDidLoad中设置self.tableView.allowsMultipleSelection=true,这样我可以在每个部分中选择一行,这对于前两个部分非常有用

然后在cellForRowAt中,我为第2节第三节设置了cell.accessoryType=.none,这样我就不会在选择该节中的行时得到复选标记

但似乎不起作用


您的类FilterTableViewCell中可能有类似的内容,也许下次只需共享更多代码:

override func setSelected(_ selected: Bool, animated: Bool) {
    if selected {
        self.accessoryType = .checkmark
    }
    else {
        self.accessoryType = .none
    }
}
因此,即使第3节中的行具有accessoryType=.none,当您选择它们时,该属性也会再次修改

快速解决方案是使用这些函数来处理复选标记,而不是设置选定项:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {

}

如何设置复选标记?它位于customTableViewCell中的setSelected函数中。self.accessoryType=已选择。选中标记:。无
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {

}