Module: ProMotion::TableBuilder

Included in:
GroupedTableScreen, Table, TableScreen
Defined in:
lib/ProMotion/table/table_builder.rb

Instance Method Summary collapse

Instance Method Details

#create_table_cell(data_cell) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/ProMotion/table/table_builder.rb', line 12

def create_table_cell(data_cell)
  new_cell = nil
  table_cell = table_view.dequeueReusableCellWithIdentifier(data_cell[:cell_identifier]) || begin
    new_cell = data_cell[:cell_class].alloc.initWithStyle(data_cell[:cell_style], reuseIdentifier:data_cell[:cell_identifier])
    new_cell.extend(PM::TableViewCellModule) unless new_cell.is_a?(PM::TableViewCellModule)
    new_cell.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin
    new_cell.clipsToBounds = true # fix for changed default in 7.1
    on_cell_created new_cell, data_cell
    new_cell
  end
  table_cell.setup(data_cell, self) if table_cell.respond_to?(:setup)
  on_cell_reused(table_cell, data_cell) if !new_cell
  table_cell
end

#on_cell_created(new_cell, data_cell) ⇒ Object



27
28
29
# File 'lib/ProMotion/table/table_builder.rb', line 27

def on_cell_created(new_cell, data_cell)
  new_cell.send(:on_load) if new_cell.respond_to?(:on_load)
end

#on_cell_reused(cell, data) ⇒ Object



31
32
33
# File 'lib/ProMotion/table/table_builder.rb', line 31

def on_cell_reused(cell, data)
  cell.send(:on_reuse) if cell.respond_to?(:on_reuse)
end

#trigger_action(action, arguments, index_path) ⇒ Object



3
4
5
6
7
8
9
10
# File 'lib/ProMotion/table/table_builder.rb', line 3

def trigger_action(action, arguments, index_path)
  return mp("Action not implemented: #{action.to_s}", force_color: :green) unless self.respond_to?(action)
  case self.method(action).arity
  when 0 then self.send(action) # Just call the method
  when 2 then self.send(action, arguments, index_path) # Send arguments and index path
  else self.send(action, arguments) # Send arguments
  end
end