我已经实现editActionsForRowAtIndexPath
了当我设法滑动单元格时效果很好,但是滑动手势并不总是被识别,我必须多次滑动直到它非常随机地工作。知道为什么会这样吗?
这是我的代码:
//Implement custom actions on swipe
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
var deleteRowAction = UITableViewRowAction()
var ignoreRowAction = UITableViewRowAction()
var acceptRowAction = UITableViewRowAction()
switch (tabSegmentControl.selectedIndex) {
case 0:
deleteRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Remove" , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
let deleteMenu = UIAlertController(title: nil, message: "Do you really want to remove this friend?", preferredStyle: .ActionSheet)
let deleteAction = UIAlertAction(title: "Remove", style: UIAlertActionStyle.Default, handler: nil)
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
deleteMenu.addAction(deleteAction)
deleteMenu.addAction(cancelAction)
self.presentViewController(deleteMenu, animated: true, completion: nil)
})
return [deleteRowAction]
case 1:
if let friendR = friendRequests {
let friendRequest = friendR[indexPath.row]
deleteRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Refuse" , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
let deleteMenu = UIAlertController(title: nil, message: "Do you really want to refuse this request?", preferredStyle: .ActionSheet)
let deleteAction = UIAlertAction(title: "Remove", style: UIAlertActionStyle.Default, handler: {(alert: UIAlertAction!) in
self.friendActions(friendRequest.userId, command: "cancel", indexPath:indexPath)
}
)
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
deleteMenu.addAction(deleteAction)
deleteMenu.addAction(cancelAction)
self.presentViewController(deleteMenu, animated: true, completion: nil)
})
ignoreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "Ignore" , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
let ignoreMenu = UIAlertController(title: nil, message: "Do you really want to ignore this request?", preferredStyle: .ActionSheet)
let ignoreAction = UIAlertAction(title: "Ignore", style: UIAlertActionStyle.Default, handler: nil)
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
ignoreMenu.addAction(ignoreAction)
ignoreMenu.addAction(cancelAction)
self.presentViewController(ignoreMenu, animated: true, completion: nil)
})
acceptRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "Accept" , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
let acceptMenu = UIAlertController(title: nil, message: "Do you really want to accept this request?", preferredStyle: .ActionSheet)
let acceptAction = UIAlertAction(title: "Ignore", style: UIAlertActionStyle.Default, handler: nil)
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
acceptMenu.addAction(acceptAction)
acceptMenu.addAction(cancelAction)
self.presentViewController(acceptMenu, animated: true, completion: nil)
})
acceptRowAction.backgroundColor = UIColor(red: 0.298, green: 0.851, blue: 0.3922, alpha: 1.0);
}
return [acceptRowAction, ignoreRowAction, deleteRowAction]
default:
break
}
return [deleteRowAction]
}