Swift - 只允许在 UITableViewCell 中选中一个复选框
Swift - Allow ONLY one checkbox selected inside a UITableViewCell
我正在努力使我的 TableView 每个单元格只接受一个复选框。
我已经使用 this solution 为复选标记保存用户默认值,效果很好,但它允许多项选择。
我已经尝试了很多关于 Stack overflow 的解决方案,但由于格式有点不同,我无法使用这些解决方案。
我尝试过但无效的方法:
尝试在 didDeselectRowAt
处将附件类型设置为 none
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
tableView.cellForRow(at: indexPath)?.accessoryType = .none
}
尝试将 table 视图设置为不允许在 viewDidNotLoad
上进行多项选择
override func viewDidLoad()
{
tableViewName.allowsMultipleSelection = false
}
根据我链接的解决方案,我将如何只允许单选?
在您链接的解决方案中,'didSelect' 函数中有这段代码
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
if selectedRows.contains(indexPath.row) {
self.selectedRows = selectedRows.filter{[=10=] != indexPath.row}
}else{
self.selectedRows.append(indexPath.row)
}
UserDefaults.standard.set(selectedRows, forKey: "selectedRows")
}
如果您只想 select 编辑一个复选框,那么您只希望在 selectedRows
对象中保存一个实体。将上面的代码改为:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
self.selectedRows = [indexPath.row]
UserDefaults.standard.set(selectedRows, forKey: "selectedRows")
}
然后,每次 select 选中一个复选框时,它会清除所有其他 select 选中的复选框,并且 select 只会清除您刚刚单击的复选框。
我正在努力使我的 TableView 每个单元格只接受一个复选框。
我已经使用 this solution 为复选标记保存用户默认值,效果很好,但它允许多项选择。
我已经尝试了很多关于 Stack overflow 的解决方案,但由于格式有点不同,我无法使用这些解决方案。
我尝试过但无效的方法:
尝试在 didDeselectRowAt
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
tableView.cellForRow(at: indexPath)?.accessoryType = .none
}
尝试将 table 视图设置为不允许在 viewDidNotLoad
override func viewDidLoad()
{
tableViewName.allowsMultipleSelection = false
}
根据我链接的解决方案,我将如何只允许单选?
在您链接的解决方案中,'didSelect' 函数中有这段代码
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
if selectedRows.contains(indexPath.row) {
self.selectedRows = selectedRows.filter{[=10=] != indexPath.row}
}else{
self.selectedRows.append(indexPath.row)
}
UserDefaults.standard.set(selectedRows, forKey: "selectedRows")
}
如果您只想 select 编辑一个复选框,那么您只希望在 selectedRows
对象中保存一个实体。将上面的代码改为:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
self.selectedRows = [indexPath.row]
UserDefaults.standard.set(selectedRows, forKey: "selectedRows")
}
然后,每次 select 选中一个复选框时,它会清除所有其他 select 选中的复选框,并且 select 只会清除您刚刚单击的复选框。