Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/maxkonovalov/MKDropdownMenu

🔻 Dropdown Menu for iOS with many customizable parameters to suit any needs
https://github.com/maxkonovalov/MKDropdownMenu

dropdown dropdown-menus dropdownmenu dropdowns ios ios-ui objective-c picker xcode

Last synced: 7 days ago
JSON representation

🔻 Dropdown Menu for iOS with many customizable parameters to suit any needs

Awesome Lists containing this project

README

        

# MKDropdownMenu

[![Build Status](https://travis-ci.org/maxkonovalov/MKDropdownMenu.svg?branch=master&style=flat)](https://travis-ci.org/maxkonovalov/MKDropdownMenu)
[![Version](https://img.shields.io/cocoapods/v/MKDropdownMenu.svg?style=flat)](http://cocoapods.org/pods/MKDropdownMenu)
[![License](https://img.shields.io/cocoapods/l/MKDropdownMenu.svg?style=flat)](http://cocoapods.org/pods/MKDropdownMenu)
[![Platform](https://img.shields.io/cocoapods/p/MKDropdownMenu.svg?style=flat)](http://cocoapods.org/pods/MKDropdownMenu)

Dropdown Menu for iOS with many customizable parameters to suit any needs.

Inspired by UIPickerView.

MKDropdownMenu
MKDropdownMenu

## Installation
### CocoaPods

`MKDropdownMenu` is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:

```ruby
pod 'MKDropdownMenu'
```

### Manually

- Add `MKDropdownMenu` folder to your Xcode project.
- `#import "MKDropdownMenu.h"` in your code.

## Usage
See the example Xcode project.

### Basic setup

Create the `MKDropdownMenu` instance and add it as a subview to your view. Set the `dataSource` and `delegate` properties to your view controller implementing `MKDropdownMenuDataSource` and `MKDropdownMenuDelegate` protocols.

```objc
MKDropdownMenu *dropdownMenu = [[MKDropdownMenu alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
dropdownMenu.dataSource = self;
dropdownMenu.delegate = self;
[self.view addSubview:dropdownMenu];
```

### Interface Builder

You can also set up the `MKDropdownMenu` in Interface Builder.

- Add a `UIView` and set its class to `MKDropdownMenu` in the Identity inspector.
- Connect the `dataSource` and `delegate` outlets to your view controller.

### Populating the data

The `MKDropdownMenuDataSource` and `MKDropdownMenuDelegate` protocols APIs are inspired by the `UIPickerView` interface, so most of the methods should be familiar if you used it before.

Implement the following `dataSource` methods:

```objc
- (NSInteger)numberOfComponentsInDropdownMenu:(MKDropdownMenu *)dropdownMenu;
- (NSInteger)dropdownMenu:(MKDropdownMenu *)dropdownMenu numberOfRowsInComponent:(NSInteger)component;
```

and the `delegate` methods that suit your needs. The most simple way to get started is to provide the titles for the header components and the rows in the following `delagate` methods:

```objc
- (NSString *)dropdownMenu:(MKDropdownMenu *)dropdownMenu titleForComponent:(NSInteger)component;
- (NSString *)dropdownMenu:(MKDropdownMenu *)dropdownMenu titleForRow:(NSInteger)row forComponent:(NSInteger)component;
```

You can also provide an `NSAttributedString` or custom `UIView` as the display data for `MKDropdownMenu` in the corresponding `delegate` methods.

### Customizations

The appearance and behavior of the `MKDropdownMenu` can be customized by setting its property values or implementing the corresponding `delegate` methods.

The default menu appearance can be customized throughout the app using the available `UI_APPEARANCE_SELECTOR` properties.

## Requirements
- iOS 8+
- Xcode 8+

## License
`MKDropdownMenu` is available under the MIT license. See the LICENSE file for more info.