ios - Swift - 只允许在 UITableViewCell 中选中一个复选框

标签 ios swift uitableview nsuserdefaults checkmark

我正在努力使我的 TableView 每个单元格只接受一个复选框。

我用过this solution为复选标记保存用户默认值,效果很好,但它允许多项选择。

我在 Stack overflow 上尝试了很多解决方案,但由于格式有点不同,我无法使用这些解决方案。

我尝试过但没有用的东西:

尝试在 didDeselectRowAt

将附件类型设置为无
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
   tableView.cellForRow(at: indexPath)?.accessoryType = .none 
}

尝试将 TableView 设置为不允许在 viewDidNotLoad 上进行多项选择

override func viewDidLoad()
{
    tableViewName.allowsMultipleSelection = false
}

根据我链接的解决方案,我将如何只允许一个选择?

最佳答案

在您链接的解决方案中,“didSelect”函数中有这段代码

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
{
    if selectedRows.contains(indexPath.row) {
        self.selectedRows = selectedRows.filter{$0 != indexPath.row}
    }else{
        self.selectedRows.append(indexPath.row)
    }
    UserDefaults.standard.set(selectedRows, forKey: "selectedRows")
}

如果您只想选中一个复选框,那么您只需要将一个实体保存在您的 selectedRows 对象中。将上面的代码改成:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
{
    self.selectedRows = [indexPath.row]

    UserDefaults.standard.set(selectedRows, forKey: "selectedRows")
}

然后每次选中一个复选框时,它会清除所有其他选中的复选框并仅选中您刚刚单击的复选框。

关于ios - Swift - 只允许在 UITableViewCell 中选中一个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59325676/

相关文章:

objective-c - xcode 4.2 将 View Controller 类设置为自定义类错误

ios - 如何在不阻塞 UI 的情况下重复调用方法?

ios - 当 slider 具有极端最大值时,UISlider MaximumTrackImage 剪辑

iphone - 我可以为 iPad 发布针对 iPhone 的应用程序吗?

javascript - 如何在 iOS 上取消双击滚动手势?

ios - 关闭屏幕时未调用 UICollectionView performBatchUpdates 完成

ios - 如何迁移未存储的 Realm 对象?

ios - 在 Web 服务异步回调上更新 UITableView

ios - 如何获取 PDF 格式的 UITableView 快照

ios - 如何使用 swift 在 UITableview 的 Collection View 中填充不同的数组值?