我想为某些行实现“滑动编辑”功能。如果满足所有条件,则应启用滑动功能。如果不是,则该行应保持静态,而未分配任何操作rowEditAction。

我的代码如下所示:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
    var noAction = UITableViewRowAction()

    var logoutAction = UITableViewRowAction(style: .Default, title: "Log Out ") { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
        if(indexPath.row == 0){
            //do stuff when button pressed
            self.tableView.reloadData()
        }
        else if(indexPath.row == 1){
            //do stuff when button pressed
            self.tableView.reloadData()
            }
        }
    }

    if(indexPath.row == 0 && conditionsFulfilled()){
        return [logoutAction]
    } else if(indexPath.row == 1 && conditionsFulfilled()){
        return [logoutAction]
    }
    return [noAction]
}


此代码不会禁用编辑功能,它只是为不应查看UITableViewRowAction的行显示一个空的logoutAction。我该如何正确完成呢?

最佳答案

UITableViewDataSource具有一个名为canEditRowAtIndexPath的方法,该方法根据Apple进行:


  该方法允许数据源将单个行排除在可编辑范围之外。可编辑的行在其单元格中显示插入或删除控件。如果未实现此方法,则假定所有行都是可编辑的...


因此,您可以例如执行以下操作:

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {

    // in this case I only allow edit from the third cell hereinafter.
    return indexPath.row > 3 ? true : false
}


希望对您有所帮助。

关于ios - UITableView禁用某些行的rowEditActionForRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32587343/

10-11 14:54