Swift

swift UITableView 单选多选 编辑

2020-06-15  本文已影响0人  江河_ios

//声明

var selectPath: IndexPath! //单选
var cellIndexPath = NSMutableArray.init() //多选

//懒加载

lazy var tableView: UITableView = {
    let tableView = UITableView.init(frame: self.view.bounds, style: .plain)
    tableView.delegate = self;
    tableView.dataSource = self
    tableView.backgroundColor = UIColor.groupTableViewBackground
     tableView.separatorStyle = UITableViewCell.SeparatorStyle.none //去掉分割线

return tableView
}()

代理实现

单选

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     let cellSting = "UITableViewCell" ;
    var  cell = tableView.dequeueReusableCell(withIdentifier: cellSting)
    //(withIdentifier: cellSting, for: indexPath)
    if cell == nil {
        cell = UITableViewCell.init(style: UITableViewCell.CellStyle.default, reuseIdentifier: cellSting)
    }
    cell?.textLabel?.text = "显示\(indexPath.row)行";
    //单选
    if selectPath == indexPath {
        cell?.accessoryType = .checkmark
    }
    else{
        cell?.accessoryType = .none
    }

    return cell!;
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("点击的第\(indexPath.row)行")

    if selectPath == nil {
        let cell = tableView.cellForRow(at: indexPath);
        cell?.accessoryType = .checkmark
        selectPath = indexPath
    }
    else
    {
        if selectPath == indexPath {
            let cell = tableView.cellForRow(at: indexPath)
            cell?.accessoryType = .none
            selectPath = nil

        }
        else
        {
            let cell1 = tableView.cellForRow(at: selectPath!)
            cell1?.accessoryType = .none
            selectPath = indexPath
            let cell = tableView.cellForRow(at: indexPath)
            cell?.accessoryType = .checkmark
        }

    }
}

多选

     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     let cellSting = "UITableViewCell" ;
    var  cell = tableView.dequeueReusableCell(withIdentifier: cellSting)
    if cell == nil {
        cell = UITableViewCell.init(style: UITableViewCell.CellStyle.default, reuseIdentifier: cellSting)
    }
    cell?.textLabel?.text = "显示\(indexPath.row)行";

    //多选
    if self.cellIndexPath.contains(indexPath) {
        cell?.accessoryType = .checkmark
    }
    else
    {
        cell?.accessoryType = .none
    }
    return cell!;
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("点击的第\(indexPath.row)行")
 
    if self.cellIndexPath.contains(indexPath) {
        self.cellIndexPath.remove(indexPath)
        let cell = tableView.cellForRow(at: indexPath)
        cell?.accessoryType = .none

    }
    else
    {
        self.cellIndexPath.add(indexPath)
        let cell = tableView.cellForRow(at: indexPath)
        cell?.accessoryType = .checkmark
    }

}

删除

 func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
    return UITableViewCell.EditingStyle.delete;
}
func tableView(_ tableView: UITableView, willBeginEditingRowAt indexPath: IndexPath) {
    print("==willBeginEditingRowAt========= \(indexPath.row)")
}
func tableView(_ tableView: UITableView, titleForDeleteConfirmationButtonForRowAt indexPath: IndexPath) -> String? {
    return "删除"
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    print("点击删除按钮===== \(indexPath.row)");
    
}

左滑显示多个

   func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

    var action1 = UITableViewRowAction();
    var action2 = UITableViewRowAction();
    var action3 = UITableViewRowAction();
    action1 = UITableViewRowAction.init(style: .default, title: "置顶", handler: { (UITableViewRowAction, IndexPath) in
        //执行操作
        print("置顶===========\(indexPath.row)")

    });
    action1.backgroundColor = UIColor.blue;
    action2 = UITableViewRowAction.init(style: .destructive, title: "发现", handler: { (UITableViewRowAction, IndexPath) in
        print("发现===========\(indexPath.row)")

    });
    action2.backgroundColor = UIColor.orange;
    action3 = UITableViewRowAction.init(style: UITableViewRowAction.Style.default, title:"隐藏", handler: { (UITableViewRowAction, IndexPath) in
        //执行操作
        print("隐藏===========\(indexPath.row)")

    });
    action3.backgroundColor = UIColor.red;
    return [action1,action2,action3];
    
}
上一篇 下一篇

猜你喜欢

热点阅读