我知道这可能为时已晚,但它比您找到的解决方案要好得多。iOS 为您提供了一个名为tableView: editActionsForRowAtIndexPath indexPath:
. 这种方法基本上允许您添加自己的 UITableViewRowActions,这比使用 UIButtons 添加整个 UIView 更容易(也更干净)。
苹果 说:
当您想为您的表格行之一提供自定义操作时,请使用此方法。当用户在一行中水平滑动时,表格视图将行内容移到一边以显示您的操作。点击其中一个操作按钮会执行与操作对象一起存储的处理程序块。
如果您不实现此方法,则表格视图会在用户滑动行时显示标准附件按钮。
如果需要,您可以自己查看Apple 文档。
示例(斯威夫特)
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
let customAction = UITableViewRowAction(style: .Normal, title: "Your Custom Action", handler: { (action: UITableViewRowAction!, indexPath: NSIndexPath!) in
println("Do whatever it is you want to do when they press your custom action button")
})
editAction.backgroundColor = UIColor.greenColor()
let deleteAction = UITableViewRowAction(style: .Normal, title: "Delete", handler: { (action: UITableViewRowAction!, indexPath: NSIndexPath!) in
println("You can even implement a deletion action here")
})
deleteAction.backgroundColor = UIColor.redColor()
return [deleteAction, editAction]
}