我正在尝试禁用滑动以删除tableview中某些特定单元格的操作。但我无法在迅捷中找到一个好的解决方案。当覆盖" tableView.isEditing = true"时,我不希望在单元格上留下左侧减号。 method.Here是我的代码。下面的代码没有禁止使用statusId" 12"滑动到单元格。希望你能理解我的问题。
String input = "These are appleapple and guavaguava";
and expected output is: These are apple and guava.
答案 0 :(得分:12)
您可以自定义UITableViewDelegate
的功能editingStyleForRowAt
,尤其是当您不需要滑动时返回UITableViewCellEditingStyle.none
,例如:
public func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle
{
if mainList[indexPath.row].statusId == "12" {
return UITableViewCellEditingStyle.none
} else {
return UITableViewCellEditingStyle.delete
}
}
答案 1 :(得分:2)
使用此表视图委托方法
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
}
答案 2 :(得分:0)
我在尝试编辑myTableview时试图禁用/启用删除功能。 这是我的解决方案:
public func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle
{
if !myTableView.isEditing {
return UITableViewCell.EditingStyle.none
} else {
return UITableViewCell.EditingStyle.delete
}
}
答案 3 :(得分:0)
感谢您发布此问题和上面的答案。
根据答案的扩展,我有一个永远都不应删除的默认行,因此我在该特定单元格上设置了标签,然后首先 使用此方法。
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
if tableView.cellForRow(at: indexPath)?.tag == 100 {
return false
}
return true
}
如何-这在调试器中导致以下警告-
尝试在表视图上同时调用-cellForRowAtIndexPath: 正在更新其可见单元格,而不是 允许。
因此,正如其他评论员所说的,请在下面使用此方法:
Swift 5.0
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
if tableView.cellForRow(at: indexPath)?.tag == 100 {
return UITableViewCell.EditingStyle.none
} else {
return UITableViewCell.EditingStyle.delete
}
}
答案 4 :(得分:-1)
viewDidLoad中的Swift 4.2只是将表值设置为...
myTableView.isEditing = false