我使用以下代码创建了一个UITableViewRowAction:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
var deleteAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete", handler: {(action:UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
})
if editingStyle == UITableViewCellEditingStyle.Delete {
let delegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = delegate.managedObjectContext!
var error: NSError?
let fetchRequest = NSFetchRequest(entityName: "Task")
let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as! [NSManagedObject]
managedContext.deleteObject(fetchedResults[indexPath.row])
table.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade)
}
当我运行它时,行可以向左滑动,但没有显示按钮。
我补充说:
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
let deleteAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete", handler: {(action:UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
})
deleteAction.backgroundColor = UIColor.redColor()
return [deleteAction]
}
并删除了commitEditingStyle中的代码,但仍然没有显示。
答案 0 :(得分:2)
如果您想要UITableviewRowAction
,则委托方法不正确
试试这个
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
}
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
let action = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "First") { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
//Do action here
}
action.backgroundColor = UIColor .greenColor()
return [action]
}
截图
答案 1 :(得分:0)
问题解决了。
我启用了尺寸类,当我在iPhone6模拟器上运行时,向左滑动它不会显示按钮。但是,当我将模拟器更改为可调整大小的iPhone时,它显示在右侧。