gpt4 book ai didi

swift - 具有多个部分和多行的 UITableView。我需要部分独立运行

转载 作者:行者123 更新时间:2023-11-28 13:26:08 25 4
gpt4 key购买 nike

UITableView 具有多个 Sections 和多行。所有行都添加了复选标记附件,我需要每个部分都有不同的行为。一个部分只允许选择 1 个复选标记,而另一个部分允许多项选择。所以目前我的第一部分只允许选择一行。当该部分中的另一行被选中时,它会取消选择另一行。

在我的第二部分中,用户可以选择多个选项,这些选项也有效,但这是我的问题所在。当我在“第 2 部分”中选择一行时,它会取消选择“第 1 部分”中选择的选项。我正在使用一堆 switch 语句试图让它工作,但我觉得必须有一种更简单的方法。有任何想法吗? (请在下面找到代码)

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

let sectionNumber = indexPath.section
switch sectionNumber {
case 0:

tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark


case 1:
if let cell = tableView.cellForRow(at: indexPath as IndexPath) {
if cell.accessoryType == .checkmark {
cell.accessoryType = .none
} else {
cell.accessoryType = .checkmark
}
}

case 2:
if let cell = tableView.cellForRow(at: indexPath as IndexPath) {
if cell.accessoryType == .checkmark {
cell.accessoryType = .none
} else {
cell.accessoryType = .checkmark
}
}

case 3:
if let cell = tableView.cellForRow(at: indexPath as IndexPath) {
if cell.accessoryType == .checkmark {
cell.accessoryType = .none
} else {
cell.accessoryType = .checkmark
}
}


default:
tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark

}
}


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

let sectionNumber = indexPath.section
let rowNumber = indexPath.row


switch sectionNumber {
case 0:
tableView.cellForRow(at: indexPath)?.accessoryType = .none
case 1:break
case 2: break
case 3:break
default:break

}

最佳答案

确保你有

tableView.allowsMultipleSelection = true

然后您可以取消选择部分 0 中的选定行:

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 0 {
for selectedIndexPath in tableView.indexPathsForSelectedRows ?? [] where selectedIndexPath.section == 0 {
tableView.deselectRow(at: selectedIndexPath, animated: true)
tableView.cellForRow(at: selectedIndexPath)?.accessoryType = .none
}
}

tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
tableView.cellForRow(at: indexPath)?.accessoryType = .none
}

关于swift - 具有多个部分和多行的 UITableView。我需要部分独立运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58335277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com