简体   繁体   English

如何在tableview编辑模式下滑动删除? (迅速)

[英]How to swipe to delete in tableview editing mode? (swift)

I want to make table view can and reorder.我想让表格视图可以重新排序。

It has hamburger button to reorder the cells and I can swipe the cell to delete the cell like iOS music app.它有汉堡包按钮来重新排序单元格,我可以滑动单元格以删除单元格,如 iOS 音乐应用程序。

So I make this way and I can't swipe the cell.所以我这样做了,我不能刷单元格。 I think the tableView.setEditing makes cell can't swipe.我认为 tableView.setEditing 使单元格无法滑动。

How can I make it?我怎样才能做到?

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}


func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    
    let action = UIContextualAction(style: .normal, title: nil) { (action, view, completion) in
        self.shoppingList.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .fade)
        completion(true)
    }
    
    action.backgroundColor = .white
    action.image = UIImage(named: "delete")
    
    let configuration = UISwipeActionsConfiguration(actions: [action])
    configuration.performsFirstActionWithFullSwipe = false
    return configuration
    
}


func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
    return true
}

func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
    return .none
}

func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool {
    return false
}


func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
    let movedCell = self.shoppingList[sourceIndexPath.row]
    shoppingList.remove(at: sourceIndexPath.row)
    shoppingList.insert(movedCell, at: destinationIndexPath.row)
}


override func viewDidLoad() {
    super.viewDidLoad()

    setup()
    bindConstraints()
}


func setup() {
   
    let footerView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 39))
    footerView.addSubview(writeButton)
    
    tableView.delegate = self
    tableView.dataSource = self
    tableView.tableFooterView = footerView
    //tableView.sectionFooterHeight = 100
   
    self.view.addSubview(tableView)
    
    tableView.setEditing(true, animated: true)
}

Try with尝试

func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    return .delete
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM