我使用新的iOS 11 UISwipeActionsConfigurationAPI 实现了拖尾滑动操作,我可以通过从边缘滑动来显示它们,可以一直滑动到左侧等.
但我无法通过刷回原来的位置来隐藏这些行为.如果我向左拖动一点然后向右拖动它会消失(参见gif).通过点击一个单元格也会被解雇.
官方邮件应用程序支持拖动以隐藏滑动操作,因此API中也可能有一种方法.
请参阅此处的示例项目:https://github.com/nezhyborets/ios-case-study-playgrounds/tree/master/UISwipeActionsConfiguration
有几个类似的问题(例如我之前的 iOS10 变体),但我认为应该有一个针对 iOS 11 的最新答案,使用 Swift4,不使用私有 API,也不依赖于您将图标限制为 unicode 表情符号。
随着 API 向 iOS11 的发展,我们现在可以放置图像和文本,但它们被迫进入模板模式,并使用您设置的任何背景颜色反转颜色。例如
let rename = UIContextualAction(style: .normal, title: "Rename") { (_, view, _) in
self.renameEntry(indexPath)
}
rename.backgroundColor = UIColor.black
rename.image = UIImage(named: "pencilEdit")
let locate = UIContextualAction(style: .normal, title: "Locate") { (_, view, _) in
self.locateEntry(indexPath)
}
locate.backgroundColor = UIColor.blue
locate.image = UIImage(named: "locatePin")
let delete = UIContextualAction(style: .destructive, title: "Forget") { (_, view, _) in
self.deleteEntry(indexPath)
}
delete.backgroundColor = UIColor.red
delete.image = UIImage(named: "triggerDeleteSelector") …Run Code Online (Sandbox Code Playgroud) uitableview ios ios11 uiswipeactionsconfiguration uicontextualaction
我正在尝试实现一项新的 iOS11 功能,该功能允许您在桌面视图滑动操作中正式使用图像。
所以,我想出了这个:
@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let deleteAction = UIContextualAction(style: .normal, title: "", handler: { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
//whatever
success(true)
})
let theImage: UIImage? = UIImage(named:"Delete")?.withRenderingMode(.alwaysOriginal)
deleteAction.image = theImage
return UISwipeActionsConfiguration(actions: [deleteAction])
}
Run Code Online (Sandbox Code Playgroud)
我的资产目录中有这个 .png 。我尝试了使用和不使用渲染模式。无论哪种情况,图像都会正确显示在调试器中:
但未能在模拟器中显示(“这里什么都没有”标记了我期望图像显示的位置):

难道我做错了什么?
我在我的 tableView 上实现了一个前导滑动操作(“删除”),由于我无法弄清楚的原因,它也显示为尾随滑动操作。参见下面的代码:
func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) ->
UISwipeActionsConfiguration? {
let delete1 = deleteAction(at: indexPath)
return UISwipeActionsConfiguration(actions: [delete1])
}
func deleteAction(at indexPath: IndexPath) -> UIContextualAction {
let action = UIContextualAction(style: .destructive, title: "Delete") { (action, view, completion) in
self.delete(at: indexPath)
}
return action
}
Run Code Online (Sandbox Code Playgroud)
我曾经有一个拖尾滑动动作,但我完全删除了这个功能。当我将 'leadingSwipeActionsConfigurationForRowAt' 更改为 'trailingSwipeActions...' 时,仅显示尾随滑动操作。如果有人能告诉我我错过了什么,我将不胜感激。谢谢。

我在 UITableView 中配置了尾随滑动操作。操作正常工作,但当操作从表格中删除单元格时,滑动操作会保留在替换已删除行的行上。所以看起来新的当前行被刷了。
我认为滑动操作实际上可能会将他们的附件转移到那个新行,我不知道。
是否有一些我没有意识到我需要调用的解雇功能?
我有一个滑动操作来“完成”我的待办事项列表应用程序中的任务。这是我设置的图像:
但是,当滑动单元格时,图像如下所示:
有没有办法使背景透明/白色和图像具有如上图所示的绿色圆圈?
如果没有,有没有办法让绿色背景“包裹”到单元格的紫色,这样就没有空格了?谢谢!
我添加了滑动删除功能,使用
override func tableView(_ tableView: UITableView,
trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath)
-> UISwipeActionsConfiguration?
Run Code Online (Sandbox Code Playgroud)
我正在通过解除/确认操作发出警报。一旦关闭,我想关闭滑动操作菜单。
override func tableView(_ tableView: UITableView,
trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let deleteClosure:UIContextualAction.Handler = {
(action:UIContextualAction,
view:UIView,
completionHandler:(Bool) -> Void) in
let alert = self.confirmDeletion({ _ in
let row = indexPath.row;
let removed = self.logList.remove(at: row);
self.deleteLogEntry(removed);
//
tableView.reloadData();
//
}, declineBlock: {_ in
tableView.reloadData();// this hides it but w/o animation
});
DispatchQueue.main.async {
self.present(alert, animated: true, completion: nil);
}
}
let deleteAction = UIContextualAction(style: .destructive, title: "Delete", …Run Code Online (Sandbox Code Playgroud) 你如何为 中的标题设置自定义字体UIContextualAction?
我试过了,UIAppearance但没有任何运气......
干杯! :)
uitableview ios uitableviewrowaction uiswipeactionsconfiguration uicontextualaction