UITableView:滑动表格视图单元格时如何停止选择

Posted

技术标签:

【中文标题】UITableView:滑动表格视图单元格时如何停止选择【英文标题】:UITableView: how stop selection while swipe the table view cell 【发布时间】:2020-06-24 14:32:47 【问题描述】:

我在这里滑动删除代码,它是我的自定义 TableViewCell 我已经实现了 setSelected 方法,如下所示..

func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle 
       // tableView.allowsSelectionDuringEditing = false
        if tableView.indexPathForSelectedRow != nil, tableView.indexPathForSelectedRow == indexPath 
            return UITableViewCell.EditingStyle.none
        
        return UITableViewCell.EditingStyle.delete
    
override func setSelected(_ selected: Bool, animated: Bool) 
        super.setSelected(selected, animated: animated)

        //some code here 

该逻辑将根据选择进行表格视图展开折叠..但这里的问题是如果我滑动删除 setSelected 也会触发..不确定如何防止任何帮助将不胜感激..

【问题讨论】:

【参考方案1】:

在 cellForRow 中试试这个

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell_identifier", for: indexPath)                
    cell.selectionStyle = UITableViewCell.SelectionStyle.none
    //or this based on swift version 
    cell.selectionStyle = .none
    return cell

【讨论】:

【参考方案2】:

我不确定你想要什么样的外观,但这会产生相同的效果。

如果在整个屏幕上滑动,则无需按下按钮即可触发删除。

如果半滑动,您可以显示按钮供用户选择选项。

半滑动(显示选项):

完全滑动(触发删除按钮):

尝试添加这两个tableView 委托方法,以便滑动删除

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool 
    // Determine which rows should be editable
    return true

    
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: 
    IndexPath) -> [UITableViewRowAction]? 
        
    let button1 = UITableViewRowAction(style: .default, title: "Delete")  
        action, indexPath in
        print("delete pressed")
        // Consider alert to confirm that it was intentionally deleted
    
    button1.backgroundColor = UIColor.red

    // Create any buttons you want

    return [button1]
        


我尝试了使用和不使用你的 tableView 方法,似乎两种方法都可以正常工作,但如果你选择这条路线,我认为你的方法没有必要

希望对你有帮助

【讨论】:

以上是关于UITableView:滑动表格视图单元格时如何停止选择的主要内容,如果未能解决你的问题,请参考以下文章

当用户没有完全滑动以删除表格视图单元格时,如何禁用/启用编辑按钮?

如何在部分中为特定行滑动 tableviewcell

在表格视图单元格中滑动后显示多个数据

当在 UITableView(在另一个笔尖/视图上)上按下单元格时,如何导航到笔尖(视图)?

在选择表格视图单元格时更改按钮的标题

滑动单元格时,有没有办法从 tableViewCell 导航到另一个视图控制器?