Just add ContextMenuSwift
to your Podfile and pod install
. Done!
pod 'ContextMenuSwift'
Show the menu of string values on your view
CM.items = ["Item 1", "Item 2", "Item 3"]
CM.showMenu(viewTargeted: YourView, delegate: self, animated: true)
Update menu items async
CM.items = ["Item 1", "Item 2", "Item 3"]
CM.showMenu(viewTargeted: YourView, delegate: self, animated: true)
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
CM.items = ["Item 1"]
CM.updateView(animated: true)
}
Update targeted view async
CM.items = ["Item 1", "Item 2", "Item 3"]
CM.showMenu(viewTargeted: YourView, delegate: self, animated: true)
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
CM.changeViewTargeted(newView: YourView)
CM.updateView(animated: true)
}
Show menu with icons
let share = ContextMenuItemWithImage(title: "Share", image: #imageLiteral(resourceName: "icons8-upload"))
let edit = "Edit"
let delete = ContextMenuItemWithImage(title: "Delete", image: #imageLiteral(resourceName: "icons8-trash"))
CM.items = [share, edit, delete]
CM.showMenu(viewTargeted: YourView, delegate: self, animated: true)
You can check events by implement ContextMenuDelegate
extension ViewController : ContextMenuDelegate {
func contextMenu(_ contextMenu: ContextMenu, targetedView: UIView, didSelect item: ContextMenuItem, forRowAt index: Int) -> Bool {
print(item.title)
return true //should dismiss on tap
}
func contextMenuDidAppear(_ contextMenu: ContextMenu) {
print("contextMenuDidAppear")
}
func contextMenuDidDisappear(_ contextMenu: ContextMenu) {
print("contextMenuDidDisappear")
}
}
- Xcode 9+
- Swift 4.0
- iOS 10+
This project is under MIT license. For more information, see LICENSE
file.
ContextMenuSwift was developed while trying to implement iOS 13 context menu with a tap gesture.
It will be updated when necessary and fixes will be done as soon as discovered to keep it up to date.
You can find me on Twitter @Umer_Jabbar and Linkedin umerjabbar.
Enjoy! 🤓