• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 表格 View 中每个部分的 UiTableViewCell 单选复选标记

[复制链接]
菜鸟教程小白 发表于 2022-12-12 11:42:09 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

如何使用自定义单元格对每个部分进行复选标记单选,当我意识到此代码时,单元格没有标记

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

        guard let it = PayMentSection(rawValue: indexPath.section) else {return}
        switch it {
        case .delivering:
            let cell = tableView.dequeueReusableCell(withIdentifier: cellid) as! MakePaymentTableViewCell
            cell.checkBox.isChecked = true
            cell.accessoryType = .checkmark
        case .ordering:
            let cell2 = tableView.dequeueReusableCell(withIdentifier: cellid2) as! MakePaymentTableViewCell2
            cell2.checkBox.isChecked = true

        }

    }

    func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
        guard let it = PayMentSection(rawValue: indexPath.section) else {return}
        switch it {
        case .delivering:
            let cell = tableView.dequeueReusableCell(withIdentifier: cellid) as! MakePaymentTableViewCell
          cell.checkBox.isChecked = false
            cell.accessoryType = .none
        case .ordering:
            let cell2 = tableView.dequeueReusableCell(withIdentifier: cellid2) as! MakePaymentTableViewCell2
          cell2.checkBox.isChecked = false

            cell2.accessoryType = .none
        }
    }



Best Answer-推荐答案


首先,像这样实现UITableViewDelegate的 tableView(_:willSelectRowAt方法,

func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
    if let selectedIndexPathsInSection = tableView.indexPathsForSelectedRows?.filter({ $0.section == indexPath.section }), !selectedIndexPathsInSection.isEmpty {
        selectedIndexPathsInSection.forEach({ tableView.deselectRow(at: $0, animated: false) })
    }
    return indexPath
}

接下来,在 MakePaymentTableViewCellMakePaymentTableViewCell2 单元格中,覆盖 setSelected(_:animated 方法,即

class MakePaymentTableViewCell: UITableViewCell {
    //rest of the code...
    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        self.accessoryType = selected ? .checkmark : .none
        self.checkBox.isChecked = selected
    }
}

不需要实现 didSelectRowAtdidDeselectRowAt 方法。

enter image description here

关于ios - 表格 View 中每个部分的 UiTableViewCell 单选复选标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57781891/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap