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