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 PopOverMenu
CocoaPods URL
License
PopOverMenu is available under the MIT license. See the LICENSE file for more info.