Showing a long list of items with a search bar in iOS-like way

SearchablePicker

Display Apple system-like picker view. It is well suited for showing a long list of items with a search bar in iOS-like way. It looks very similar to the views shown in Apple System Setting.

  • Native-like behavior.
  • Two options to present:
    • Titles only.
    • Titles with descriptions.
  • Available for iPhone and iPad.
  • Support for iOS 9 and above.
  • Objective-c
  • Xcode 9 and above
    • (due to safe area in autolayout)

Basic Usage

Title only

Objective-c

#import "SearchStringPickerViewController.h"

NSArray *aryCountries = [NSArray arrayWithObjects:@"Afghanistan", @"Georgia", @"Haiti", @"India", nil];

[SearchStringPickerViewController showPickerWithTitle:@"Countries"
                                                     rows:aryCountries

                                         initialSelection:[colors indexOfObject:@"India"]
                                               sourceView:sender
                                                doneBlock:^(NSInteger selectedIndex, NSString *selectedValue) {
                                                    NSLog(@"Index: %@, value: %@", selectedIndex, selectedValue);
                                                }
                                              cancelBlock:nil 
                                presentFromViewController:self];                                

Title with description

Objective-c

#import "SearchStringPickerViewController.h"

NSDictionary *dicCountries = @{@"Afghanistan" : @"Islamic Republic of Afghanistan", @"Georgia" : @"", @"Haiti" : @"Republic of Haiti", @"India" : @"Republic of India"};

[SearchStringPickerViewController showPickerWithTitle:@"Countries"
                                          rowsWithDetails:dicCountries
                                         initialSelection:self.lblPickerWithTitleAndDesc.text
                                 pickerTableViewCellStyle:UITableViewCellStyleSubtitle
                                               sourceView:sender
                                                doneBlock:^(NSString *selectedTitle, NSString *selectedDetail) {
                                                    NSLog(@"Title: %@, Detail: %@", selectedTitle, selectedDetail);
                                                }
                                              cancelBlock:nil
                                presentFromViewController:self];

For detailed examples, please download and try out this repo.

Installation

Cocoapod

pod 'SearchablePicker'

Carthage

coming soon!

Manually

Download the project and add SearchablePicker folder to your project.

Motivation

Coming soon!

Todo

  • [ ] Insert motivation
  • [ ] Add customizable bar color
  • [ ] Implement alphabets indexing at the scroll bar
  • [x] Cocoapod support
  • [ ] Carthage support

GitHub