我有一个tableview,它使用两个tableview行,一个是删除,另一个是更多。
当我点击更多按钮时,会出现一个具有一些动作的警报控制器。 我希望当点击更多按钮时会显示警报控制器,但是rowActions会自动显示在哪一行按下了更多的按钮,但是当我点击更多按钮时它会逐渐消失。
Apple mail app和whatsapp成功完成了这项工作。
我在模拟器中使用xcode 9和ios 11.1。
我使用以下代码实现了滑动操作功能:
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let conversation = fetchedResultsController.object(at: indexPath)
let conversationId = Int(conversation.id)
let conversationType = Int(conversation.conversation_type_id)
let deleteTitle = getDeleteRowActionTitle(conversationId: conversationId, conversationType: conversationType)
let moreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.normal, title: "More", handler:{action, indexpath in
self.moreAction(conversation: conversation, conversationId:conversationId,conversationType:conversationType,indexPath:indexpath)
})
moreRowAction.backgroundColor = UIColor.green
let deleteRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.destructive, title: deleteTitle, handler:{action, indexPath in
})
return [deleteRowAction, moreRowAction]
}
func moreAction(conversation:Nd_conversation,conversationId: Int,conversationType:Int,indexPath:IndexPath){
let muteTitle = notify ? "Mute" : "Unmute"
let moreActionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
let action1 = UIAlertAction(title: muteTitle, style: .default, handler: {(action) -> Void in
})
moreActionSheet.addAction(action1)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: {(action) -> Void in })
moreActionSheet.addAction(cancelAction)
self.present(moreActionSheet, animated: true, completion: nil)
}
这适用于ios 10.3,但不适用于ios 11。