作为默认行为,一旦你想要删除表格视图的任何单个单元格,你将点击cel左侧的删除按钮,删除确认按钮将显示在单元格的右侧,然后继续点击此按钮,此行将被删除。对于此行为,您需要有两个步骤来删除行。是否有任何方法只能点击删除按钮(在单元格左侧)删除单元格而不点击确认按钮?
答案 0 :(得分:0)
您的意思是仅在交换时删除行吗?忽略删除按钮?
您可以使用 UISwipeGestureRecognizer ,如下所示:
class YourViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
var swipe = UISwipeGestureRecognizer(target: self, action: #selector(self.didSwipe))
self.tableView.addGestureRecognizer(swipe)
}
func didSwipe(recognizer: UIGestureRecognizer) {
if swipe.state == UIGestureRecognizerState.Ended {
let swipeLocation = swipe.locationInView(self.tableView)
if let swipedIndexPath = tableView.indexPathForRowAtPoint(swipeLocation) {
if let swipedCell = self.tableView.cellForRowAtIndexPath(swipedIndexPath) {
self.cellObjectsArray.remove(at: swipedIndexPath.row)
tableView.deleteRows(at: [swipedIndexPath], with: .fade)
}
}
}
}
}
答案 1 :(得分:0)
您可以通过实现以下委托方法来删除单元格,但这是一个两步过程,
commitEditingStyle
)如果您想一步完成/点击,请在UITableViewCell
及其选择器中添加自定义按钮,获取indexpath
UITableViewCell
和删除对象来自数据源和重新加载表,这类似于commitEditingStyle
方法中实现的代码。
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
return @"Delete";
}
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
//Delete the object at `indexPath` from datasource
//Update UI, by reloading section/entire table
}