import UIKit class YourViewController: UIViewController { @IBOutlet weak var yourButton: UIButton! let buttonMenuItems = ["Spring", "Summer", "Autumn", "Winter"] override func viewDidLoad() { super.viewDidLoad() yourButton.menu = createAttributeMenu(title: "Season", buttonMenuItems: buttonMenuItems) { selectedOption in print("Selected Option: \(selectedOption)") } yourButton.showsMenuAsPrimaryAction = true } } extension UIViewController { func createAttributeMenu(title: String, buttonMenuItems: [String], handler: @escaping (String) -> Void) -> UIMenu { var menuActions: [UIAction] = [] for attribute in buttonMenuItems { let item = UIAction(title: attribute) { action in handler(action.title) } menuActions.append(item) } return UIMenu(title: title, children: menuActions) } }