我目前已经设置了一个UITableView,其中填充了几个单元格。我想禁用只有一个单元格的滑动删除功能,但保留所有其他单元格。
到目前为止,我已经尝试了以下但没有运气:
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
let defaults = NSUserDefaults.standardUserDefaults()
let presets = defaults.objectForKey("presets")!
if indexPath.row == (presets.count) {
// I want this cell non-removable
UITableViewCellEditingStyle.None
}
else {
let presets = defaults.objectForKey("presets")?.mutableCopy() as! NSMutableArray
presets.removeObjectAtIndex(indexPath.row)
defaults.setValue(presets, forKey: "presets")
defaults.synchronize()
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}
真的对这里做什么一无所知。任何帮助将不胜感激!
答案 0 :(得分:7)
您需要实现tableView:canEditRowAtIndexPath:
方法,如下所示:
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return indexPath.row != (presets.count)
}
indexPath.row != (presets.count)
表达式会为除true
之外的所有行返回presets.count
,从而禁用其上的所有编辑功能。