module ProMotion::Table
Attributes
promotion_table_data[R]
Protected Class Methods
included(base)
click to toggle source
# File lib/ProMotion/table/table.rb, line 379 def self.included(base) base.extend(TableClassMethods) end
Public Instance Methods
accessory_toggled_switch(switch)
click to toggle source
# File lib/ProMotion/table/table.rb, line 111 def accessory_toggled_switch(switch) table_cell = closest_parent(UITableViewCell, switch) index_path = closest_parent(UITableView, table_cell).indexPathForCell(table_cell) if index_path data_cell = cell_at(index_path: index_path) data_cell[:accessory][:arguments][:value] = switch.isOn if data_cell[:accessory][:arguments].is_a?(Hash) trigger_action(data_cell[:accessory][:action], data_cell[:accessory][:arguments], index_path) if data_cell[:accessory][:action] end end
cell_at(args = {})
click to toggle source
Returns the data cell
# File lib/ProMotion/table/table.rb, line 159 def cell_at(args = {}) self.promotion_table_data.cell(args) end
check_table_data()
click to toggle source
# File lib/ProMotion/table/table.rb, line 26 def check_table_data mp("Missing #table_data method in TableScreen #{self.class.to_s}.", force_color: :red) unless self.respond_to?(:table_data) end
deleteRowsAtIndexPaths(index_paths, withRowAnimation: animation)
click to toggle source
# File lib/ProMotion/table/table.rb, line 278 def deleteRowsAtIndexPaths(index_paths, withRowAnimation: animation) mp "ProMotion expects you to use 'delete_cell(index_paths, animation)'' instead of 'deleteRowsAtIndexPaths(index_paths, withRowAnimation:animation)'.", force_color: :yellow delete_row(index_paths, animation) end
delete_row(index_paths, animation = nil)
click to toggle source
# File lib/ProMotion/table/table.rb, line 122 def delete_row(index_paths, animation = nil) deletable_index_paths = [] index_paths = [index_paths] if index_paths.kind_of?(NSIndexPath) index_paths.each do |index_path| delete_cell = false delete_cell = trigger_action(:on_cell_deleted, cell_at(index_path: index_path), index_path) if respond_to?(:on_cell_deleted) unless delete_cell == false self.promotion_table_data.delete_cell(index_path: index_path) deletable_index_paths << index_path end end table_view.deleteRowsAtIndexPaths(deletable_index_paths, withRowAnimation: map_row_animation_symbol(animation)) if deletable_index_paths.length > 0 end
edit_mode(args = {})
click to toggle source
# File lib/ProMotion/table/table.rb, line 147 def edit_mode(args = {}) args[:enabled] = false if args[:enabled].nil? args[:animated] = true if args[:animated].nil? setEditing(args[:enabled], animated:args[:animated]) end
edit_mode?()
click to toggle source
# File lib/ProMotion/table/table.rb, line 154 def edit_mode? !!isEditing end
numberOfSectionsInTableView(_)
click to toggle source
Cocoa touch methods #################
# File lib/ProMotion/table/table.rb, line 164 def numberOfSectionsInTableView(_) self.promotion_table_data.sections.length end
screen_setup()
click to toggle source
# File lib/ProMotion/table/table.rb, line 17 def screen_setup check_table_data set_up_header_footer_views set_up_searchable set_up_refreshable set_up_longpressable set_up_row_height end
search_string()
click to toggle source
# File lib/ProMotion/table/table.rb, line 94 def search_string self.promotion_table_data.search_string end
searching?()
click to toggle source
# File lib/ProMotion/table/table.rb, line 90 def searching? self.promotion_table_data.filtered? end
sectionIndexTitlesForTableView(_)
click to toggle source
Set table_data_index if you want the right hand index column (jumplist)
# File lib/ProMotion/table/table.rb, line 184 def sectionIndexTitlesForTableView(_) return if searching? return self.table_data_index if self.respond_to?(:table_data_index) nil end
set_up_longpressable()
click to toggle source
# File lib/ProMotion/table/table.rb, line 77 def set_up_longpressable if self.class.respond_to?(:get_longpressable) && self.class.get_longpressable self.make_longpressable(self.class.get_longpressable_params) end end
set_up_refreshable()
click to toggle source
# File lib/ProMotion/table/table.rb, line 67 def set_up_refreshable if self.class.respond_to?(:get_refreshable) && self.class.get_refreshable if defined?(UIRefreshControl) self.make_refreshable(self.class.get_refreshable_params) else mp "To use the refresh control on < iOS 6, you need to include the CocoaPod 'CKRefreshControl'.", force_color: :yellow end end end
set_up_row_height()
click to toggle source
# File lib/ProMotion/table/table.rb, line 83 def set_up_row_height if self.class.respond_to?(:get_row_height) && params = self.class.get_row_height self.view.rowHeight = params[:height] self.view.estimatedRowHeight = params[:estimated] end end
set_up_searchable()
click to toggle source
# File lib/ProMotion/table/table.rb, line 47 def set_up_searchable if self.class.respond_to?(:get_searchable) && self.class.get_searchable self.make_searchable(self.class.get_searchable_params) end end
setup_search_method()
click to toggle source
# File lib/ProMotion/table/table.rb, line 53 def setup_search_method params = self.class.get_searchable_params if params.nil? return nil else @search_method || begin params = self.class.get_searchable_params @search_action = params[:with] || params[:find_by] || params[:search_by] || params[:filter_by] @search_action = method(@search_action) if @search_action.is_a?(Symbol) || @search_action.is_a?(String) @search_action end end end
tableView(_, numberOfRowsInSection: section)
click to toggle source
Number of cells
# File lib/ProMotion/table/table.rb, line 169 def tableView(_, numberOfRowsInSection: section) self.promotion_table_data.section_length(section) end
table_view()
click to toggle source
# File lib/ProMotion/table/table.rb, line 13 def table_view self.view end
toggle_edit_mode(animated = true)
click to toggle source
# File lib/ProMotion/table/table.rb, line 143 def toggle_edit_mode(animated = true) edit_mode({enabled: !editing?, animated: animated}) end
update_table_data(args = {})
click to toggle source
# File lib/ProMotion/table/table.rb, line 137 def update_table_data(args = {}) args = { index_paths: args } unless args.is_a?(Hash) self.update_table_view_data(self.table_data, args) end
update_table_view_data(data, args = {})
click to toggle source
# File lib/ProMotion/table/table.rb, line 98 def update_table_view_data(data, args = {}) self.promotion_table_data.data = data if args[:index_paths] args[:animation] ||= UITableViewRowAnimationNone table_view.beginUpdates table_view.reloadRowsAtIndexPaths(Array(args[:index_paths]), withRowAnimation: args[:animation]) table_view.endUpdates else table_view.reloadData end end
Protected Instance Methods
map_cell_editing_style(symbol)
click to toggle source
# File lib/ProMotion/table/table.rb, line 357 def map_cell_editing_style(symbol) { none: UITableViewCellEditingStyleNone, delete: UITableViewCellEditingStyleDelete, insert: UITableViewCellEditingStyleInsert }[symbol] || symbol || UITableViewCellEditingStyleNone end
map_row_animation_symbol(symbol)
click to toggle source
# File lib/ProMotion/table/table.rb, line 365 def map_row_animation_symbol(symbol) symbol ||= UITableViewRowAnimationAutomatic { fade: UITableViewRowAnimationFade, right: UITableViewRowAnimationRight, left: UITableViewRowAnimationLeft, top: UITableViewRowAnimationTop, bottom: UITableViewRowAnimationBottom, none: UITableViewRowAnimationNone, middle: UITableViewRowAnimationMiddle, automatic: UITableViewRowAnimationAutomatic }[symbol] || symbol || UITableViewRowAnimationAutomatic end