Update PopOverMenu.podspec
PopOverMenu is a PopOver style menu.
Basic
public func openMenu(sender:UIBarButtonItem) { let titles = ["Menu1", "Menu2", "Menu3"] let descriptions = ["description1", "description2", "description3"] let popOverViewController = PopOverViewController.instantiate() popOverViewController.set(titles: titles) popOverViewController.set(descriptions: descriptions) // option parameteres // popOverViewController.set(selectRow: 1) // popOverViewController.set(showsVerticalScrollIndicator: true) // popOverViewController.set(separatorStyle: UITableViewCellSeparatorStyle.singleLine) popOverViewController.popoverPresentationController?.barButtonItem = sender popOverViewController.preferredContentSize = CGSize(width: 300, height:135) popOverViewController.presentationController?.delegate = self popOverViewController.completionHandler = { selectRow in switch (selectRow) { case 0: break case 1: break case 2: break default: break } }; present(popOverViewController, animated: true, completion: nil) } func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.none } func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { return UIModalPresentationStyle.none }
Array
func openMenu(view :UIView) { let popOverViewController = PopOverViewController.instantiate() let titles = [ "Menu1", "Menu2", "Menu3"] let keys = [1, 2, 3] popOverViewController?.setArrayForView(delegate: self, view: view, titles: titles, keys: keys, defaultKey: selectedIntKey) { (key, index) in self.selectedIntKey = key print("key is \(String(describing: key)) , index is \(index) ") } self.present(popOverViewController, animated: true) {() -> Void in } } func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.none } func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { return UIModalPresentationStyle.none }
Array / with all
func openMenu(view :UIView) { let popOverViewController = PopOverViewController.instantiate() let titles = ["Menu1", "Menu2", "Menu3"] let keys = [1, 2, 3] let allName = "All" popOverViewController?.setArrayForView(delegate: self, view: view, titles: titles, keys: keys, defaultKey: selectedIntKey, allName: allName, onSelected: { (key, index) in self.selectedIntKey = key print("key is \(String(describing: key)) , index is \(index) ") }) self.present(popOverViewController, animated: true) {() -> Void in } } func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.none } func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { return UIModalPresentationStyle.none }
Enum
func openMenu(view :UIView) { let popOverViewController = PopOverViewController.instantiate() let allName = "All" popOverViewController?.setEnumForView(delegate: self, view: view, enumType: FoodName.self, defaultEnum: selectedFoodName, allName: allName, onSelected: { (key, index) in print("key is \(String(describing: key)) , index is \(index) ") if index == 0 { self.selectedFoodName = nil } else { self.selectedFoodName = key let foodValue = unsafeBitCast(key, to: FoodValue.self) print(foodValue.rawValue) } }) self.present(popOverViewController, animated: true) {() -> Void in } } func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.none } func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { return UIModalPresentationStyle.none }
UIBarButtonItem One step
func openMenu(sender: UIBarButtonItem) { let popOverViewController = PopOverViewController.instantiate() let titles = ["Menu1", "Menu2", "Menu3"] self.popOverViewController?.setArrayForBarButtonItem(delegate: self, barButtonItem: sender, titles: titles, separatorStyle: .singleLine) { (selectRow) in self.textLabel?.text = String(selectRow) } present(popOverViewController, animated: true, completion: nil) } func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.none } func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { return UIModalPresentationStyle.none }
Two step
func openMenu(sender: UIBarButtonItem) { let popOverViewController = PopOverViewController.instantiate() let titles = ["Menu1", "Menu2", "Menu3"] let descriptions = ["description1", "description2", "description3"] self.popOverViewController?.setArrayForBarButtonItem(delegate: self, barButtonItem: sender, titles: titles, descriptions: descriptions, separatorStyle: .none) { (selectRow) in self.textLabel?.text = String(selectRow) } present(popOverViewController, animated: true, completion: nil) } func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.none } func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { return UIModalPresentationStyle.none }
UIButton
enum Drink: String, CaseIterable { case coffee case water case milk case tea }
@IBAction func openMenu(sender: UIButton) { self.popOverViewController = PopOverViewController.instantiate() guard let popOverViewController = popOverViewController else { return } popOverViewController.setEnumForView(delegate: self, view: sender, enumType: Drink.self, defaultEnum: selectedDrink, separatorStyle: .none) { (key, index) in guard let key = key else { return } self.selectedDrink = key switch (key) { case .water: self.textLabel?.text = "water" break case .coffee: self.textLabel?.text = "coffee" break case .milk: self.textLabel?.text = "milk" break case .tea: self.textLabel?.text = "tea" break default: break } } self.present(popOverViewController, animated: true) {() -> Void in } }
@import PopOverMenu; -(IBAction)openMenu:(id)sender { NSArray *titles = @[@"Menu1", @"Menu2", @"Menu3"]; NSArray *descriptions = @[@"description1", @"", @"description3"]; PopOverViewController *popOverViewController = [PopOverViewController instantiate]; [popOverViewController setTitles:titles]; [popOverViewController setDescriptions:descriptions]; popOverViewController.popoverPresentationController.barButtonItem = sender; popOverViewController.preferredContentSize = CGSizeMake(300, 135); popOverViewController.presentationController.delegate = self; [popOverViewController setCompletionHandler:^(NSInteger selectRow) { switch (selectRow) { case 0: break; case 1: break; case 2: break; default: break; } }]; [self presentViewController:popOverViewController animated:YES completion:nil]; } - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller { return UIModalPresentationNone; } - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection { return UIModalPresentationNone; }
pod PopOverMenu
PopOverMenu is available under the MIT license. See the LICENSE file for more info.
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
PopOverMenu

PopOverMenu is a PopOver style menu.
Image
iPhone
Examples
Swift
Basic
Array
Array / with all
Enum
UIBarButtonItem One step
Two step
UIButton
ObjectiveC
Installation (CocoaPods)
pod PopOverMenuCocoaPods URL
License
PopOverMenu is available under the MIT license. See the LICENSE file for more info.