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];
}