Module: ProMotion::Table::Searchable
- Included in:
- ProMotion::Table
- Defined in:
- lib/ProMotion/table/extensions/searchable.rb
Instance Method Summary collapse
- #get_searchable_params ⇒ Object
-
#make_searchable(params = nil) ⇒ Object
params argument is deprecated.
- #search_controller ⇒ Object
- #searchBar(search_bar, selectedScopeButtonIndexDidChange: selected_scope_index) ⇒ Object
-
#updateSearchResultsForSearchController(search_controller) ⇒ Object
UISearchResultsUpdating protocol methods #########.
- #willDismissSearchController(search_controller) ⇒ Object
-
#willPresentSearchController(search_controller) ⇒ Object
UISearchControllerDelegate methods #######.
Instance Method Details
#get_searchable_params ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/ProMotion/table/extensions/searchable.rb', line 43 def get_searchable_params params = self.class.get_searchable_params.dup # support camelCase params params[:search_results_updater] ||= params[:searchResultsUpdater] params[:hides_nav_bar] = params[:hidesNavigationBarDuringPresentation] if params[:hides_nav_bar].nil? params[:obscures_background] = params[:obscuresBackgroundDuringPresentation] if params[:obscures_background].nil? params[:hides_search_bar_when_scrolling] = params[:hidesSearchBarWhenScrolling] if params[:hides_search_bar_when_scrolling].nil? params[:delegate] ||= self params[:search_results_updater] ||= self params[:search_bar_delegate] ||= self params[:hides_nav_bar] = true if params[:hides_nav_bar].nil? params[:obscures_background] = false if params[:obscures_background].nil? params[:hides_search_bar_when_scrolling] = false if params[:hides_search_bar_when_scrolling].nil? params end |
#make_searchable(params = nil) ⇒ Object
params argument is deprecated. No longer need to use it.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/ProMotion/table/extensions/searchable.rb', line 9 def make_searchable(params = nil) # params argument is deprecated. No longer need to use it. params = get_searchable_params self.definesPresentationContext = true search_controller.delegate = params[:delegate] search_controller.searchResultsUpdater = params[:search_results_updater] search_controller. = params[:hides_nav_bar] search_controller.dimsBackgroundDuringPresentation = params[:obscures_background] # iOS 8+ (not deprecated yet) # search_controller.obscuresBackgroundDuringPresentation = params[:obscures_background] # iOS 9.1+ recommends using this instead of dimsBackgroundDuringPresentation = search_controller.searchBar .delegate = params[:search_bar_delegate] .placeholder = NSLocalizedString(params[:placeholder], nil) if params[:placeholder] if params[:scopes] @scopes = params[:scopes] .scopeButtonTitles = @scopes end if && .respond_to?(:setSearchController) # For iOS 11 and later, we place the search bar in the navigation bar. .searchController = search_controller .hidesSearchBarWhenScrolling = params[:hides_search_bar_when_scrolling] else # For iOS 10 and earlier, we place the search bar in the table view's header. .autoresizingMask = UIViewAutoresizingFlexibleWidth tableView.tableHeaderView = if params[:hide_initially] tableView.contentOffset = CGPointMake(0, .frame.size.height) end end @search_controller = search_controller end |
#search_controller ⇒ Object
5 6 7 |
# File 'lib/ProMotion/table/extensions/searchable.rb', line 5 def search_controller @search_controller ||= UISearchController.alloc.initWithSearchResultsController(nil) end |
#searchBar(search_bar, selectedScopeButtonIndexDidChange: selected_scope_index) ⇒ Object
84 85 86 |
# File 'lib/ProMotion/table/extensions/searchable.rb', line 84 def searchBar(, selectedScopeButtonIndexDidChange: selected_scope_index) try :did_change_selected_scope, selected_scope_index end |
#updateSearchResultsForSearchController(search_controller) ⇒ Object
UISearchResultsUpdating protocol methods #########
74 75 76 77 78 79 80 81 82 |
# File 'lib/ProMotion/table/extensions/searchable.rb', line 74 def updateSearchResultsForSearchController(search_controller) search_text = search_controller.searchBar.text if search_text.empty? promotion_table_data.clear_filter else promotion_table_data.search(search_text) end table_view.reloadData end |
#willDismissSearchController(search_controller) ⇒ Object
68 69 70 |
# File 'lib/ProMotion/table/extensions/searchable.rb', line 68 def willDismissSearchController(search_controller) search_controller.delegate.will_end_search if search_controller.delegate.respond_to? "will_end_search" end |
#willPresentSearchController(search_controller) ⇒ Object
UISearchControllerDelegate methods #######
64 65 66 |
# File 'lib/ProMotion/table/extensions/searchable.rb', line 64 def willPresentSearchController(search_controller) search_controller.delegate.will_begin_search if search_controller.delegate.respond_to? "will_begin_search" end |