我正在使用Swift 4创建一个iOS应用,并且没有在使用Storyboards。要从Table View Controller中删除行,用户向左滑动该行,然后单击Delete按钮。
这是我用来实现该代码的代码(未使用任何外部库):
override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { self.isAccessibilityElement = true self.accessibilityLabel = "Delete row" let deleteAction = UIContextualAction(style: .normal , title: "DELETE") { (action, view, handler) in self.removeRowFromMyList(indexPath: indexPath.row) MyListController.stations.remove(at: indexPath.row) self.tableView.deleteRows(at: [indexPath], with: .automatic) self.tableView.setEditing(false, animated: true) self.tableView.reloadData() } let swipeAction = UISwipeActionsConfiguration(actions: [deleteAction]) swipeAction.performsFirstActionWithFullSwipe = false return swipeAction }
我确实检查了其他问题,但没有一个解决。对于解决此问题所需的其他信息,请随时在此处评论。谢谢 :)
使用Apple的UIAccessibility中的辅助功能自定义操作
您只需要设置辅助功能自定义操作:
cell.accessibilityCustomActions = [UIAccessibilityCustomAction(name: "Delete", target: self, selector: #selector(theCustomAction))] @objc private func theCustomAction() -> Bool { //Do anything you want here return true }
更新:
因此,我确实重新创建了该项目,但是这次我使用的是Storyboards(不是最后一次),我从Cocoapods导入了SwipeCellKit库,并遵循了他们的文档,VoiceOver在删除indexPath.row中的单元格方面工作得很好。没问题。