如何为选定的tableView行创建自定义图像复选标记附件?

时间:2019-06-20 13:21:21

标签: ios swift uitableview

如何分配自定义图像,以及如何选择和取消选择.checkmark tableView附件?

是否可以将此自定义附件也放置在tableView行的左侧,并且在tableView中始终可见?

在首次加载tableView时,仍会显示该附件,而该附件实际上与Apple Reminders应用程序类似,已取消选择。

以下是我正在寻找的示例:

取消选中:

enter image description here

已选择:

enter image description here

当前,这就是我所拥有的:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
}

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

1 个答案:

答案 0 :(得分:0)

这是示例代码。您需要为我的案例创建自己的附件视图,我只是在自定义视图中添加了一个圆圈,之后您只需要使隐藏的内容为真或假即可。

extension ViewController: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
    cell.accessoryView = CheckMarkView.init()
    cell.accessoryView?.isHidden = true
    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    //tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
    tableView.cellForRow(at: indexPath)?.accessoryView?.isHidden = false
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    tableView.cellForRow(at: indexPath)?.accessoryView?.isHidden = true
}

}

class CheckMarkView: UIView {
override init(frame: CGRect) {
    super.init(frame: frame) // calls designated initializer
    let img = UIImage(named: "circle.png") //replace with your image name
    let imageView: UIImageView = UIImageView(image: img)
    self.addSubview(imageView)
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}
}