检查单元格时如何显示复选标记

时间:2016-01-25 17:38:07

标签: ios swift

我在tableview中有3个表视图单元格。我想在检查时在单元格上显示复选标记。

这是我的代码:

import UIKit

class UserRightRoleTableViewController: UITableViewController {

    @IBOutlet var roleTableView: UITableView!

    @IBOutlet var managerTableViewCell: UITableViewCell!
    @IBOutlet var readerTableViewCell: UITableViewCell!
    @IBOutlet var memberTableViewCell: UITableViewCell!

    var checked = [false, false, false]
    var cells = [UITableViewCell]()
    var roleString = ["Manager, Member, Reader"]

    override func viewDidLoad() {
        super.viewDidLoad()
        title = "Role"
        navigationController?.navigationBar.backgroundColor = UIColor.whiteColor()
        let backButton = UIBarButtonItem(title: "<User", style: UIBarButtonItemStyle.Done, target: self, action: "backToVC")
        navigationItem.leftBarButtonItem = backButton
        navigationController?.navigationBar.tintColor = UIColor.whiteColor()
        cells = [managerTableViewCell, memberTableViewCell, readerTableViewCell]
    }

    func backToVC() {
        dismissViewControllerAnimated(true, completion: nil)
    }

    @IBAction func backToUserRightTableViewControllerAction(sender: AnyObject) {
        dismissViewControllerAnimated(true, completion: nil)
    }



    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        if indexPath.row == 0 {
            checked[0] == true ? (managerTableViewCell.accessoryType = .Checkmark) : (managerTableViewCell.accessoryType = .None)
        } else if indexPath.row == 1 {
            checked[1] == true ? (memberTableViewCell.accessoryType = .Checkmark) : (memberTableViewCell.accessoryType = .None)
        } else {
            checked[2] == true ? (readerTableViewCell.accessoryType = .Checkmark) : (readerTableViewCell.accessoryType = .None)
        }
    }

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        checked[indexPath.row] = true
    }
}

但它不起作用。

2 个答案:

答案 0 :(得分:3)

除了更新accessoryType之外,您还需要更新didSelectRowAtIndexPath函数中的单元格checked

您的willDisplayCell功能可以更加简单:

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    cell.accessoryType = checked[indexPath.row] ? .Checkmark : .None
}

答案 1 :(得分:0)

谢谢@rmaddy,我已经通过以下方式解决了问题:

.pre-icon::before {
    content: "";
    display: inline-block;
    width: 6px;
    height: 10px;
    background-color: transparent;
    background-image: url(data:image/gif;base64,R0lGODlhBgAKAJEAADM2Zv///////wAAACH5BAUUAAIALAAAAAAGAAoAAAINBIRimdvHFETOUWglKwA7);
    background-repeat: no-repeat;
    margin-left: .13em;
    margin-right: .25em;
    white-space: nowrap;
}