Module: ProMotion::Table::Refreshable

Included in:
ProMotion::Table
Defined in:
lib/ProMotion/table/extensions/refreshable.rb

Instance Method Summary collapse

Instance Method Details

#end_refreshingObject Also known as: stop_refreshing



28
29
30
31
32
33
# File 'lib/ProMotion/table/extensions/refreshable.rb', line 28

def end_refreshing
  return unless @refresh_control

  @refresh_control.attributedTitle = NSAttributedString.alloc.initWithString(sprintf(@updated_format, Time.now.strftime(@updated_time_format)))
  @refresh_control.endRefreshing
end

#make_refreshable(params = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/ProMotion/table/extensions/refreshable.rb', line 5

def make_refreshable(params={})
  pull_message = params[:pull_message] || "Pull to refresh"
  @refreshing = params[:refreshing] || "Refreshing data..."
  @updated_format = params[:updated_format] || "Last updated at %s"
  @updated_time_format = params[:updated_time_format] || "%l:%M %p"
  @refreshable_callback = params[:callback] || :on_refresh

  @refresh_control = UIRefreshControl.alloc.init
  @refresh_control.attributedTitle = NSAttributedString.alloc.initWithString(pull_message)
  @refresh_control.addTarget(self, action:'refreshView:', forControlEvents:UIControlEventValueChanged)
  self.refreshControl = @refresh_control
end

#refreshView(refresh) ⇒ Object

UIRefreshControl Delegates



39
40
41
42
43
44
45
46
# File 'lib/ProMotion/table/extensions/refreshable.rb', line 39

def refreshView(refresh)
  refresh.attributedTitle = NSAttributedString.alloc.initWithString(@refreshing)
  if @refreshable_callback && self.respond_to?(@refreshable_callback)
    self.send(@refreshable_callback)
  else
    PM.logger.warn "You must implement the '#{@refreshable_callback}' method in your TableScreen."
  end
end

#start_refreshingObject Also known as: begin_refreshing



18
19
20
21
22
23
24
25
# File 'lib/ProMotion/table/extensions/refreshable.rb', line 18

def start_refreshing
  return unless @refresh_control

  @refresh_control.beginRefreshing

  # Scrolls the table down to show the refresh control when invoked programatically
  tableView.setContentOffset(CGPointMake(0, tableView.contentOffset.y-@refresh_control.frame.size.height), animated:true) if tableView.contentOffset.y > -65.0
end