Rubymotion “加载时”回调中的“刷新时”回调未刷新Tabledata

Rubymotion “加载时”回调中的“刷新时”回调未刷新Tabledata,rubymotion,rubymotion-promotion,Rubymotion,Rubymotion Promotion,我的tableview不会重新加载数据,它只显示noob,但不显示重新刷新的数据 我的代码中是否缺少任何步骤 class ReservoirsScreen < PM::TableScreen title "I want to refresh" refreshable def on_load @returned_data ||= [{title:'noob'}] on_refresh end def table_data [{ cell

我的tableview不会重新加载数据,它只显示
noob
,但不显示重新刷新的数据

我的代码中是否缺少任何步骤

class ReservoirsScreen < PM::TableScreen
  title "I want to refresh"
  refreshable
  def on_load
    @returned_data ||= [{title:'noob'}]
    on_refresh
  end
  def table_data
    [{
      cells: @returned_data.map do |reservoir|
        {
          title: reservoir["title"],
          action: :select_reservoir,
          arguments: { reservoir: reservoir["title"] }
        }
      end
    }]
  end


  def select_reservoir(reservoir)
    PM.logger.info reservoir
  end 


  def on_refresh
    start_refreshing
    get_reserviors
    stop_refreshing
    update_table_data          
  end  

  def get_reserviors
    start_refreshing
    url_string = "http://128.199.223.114:10080/"
    AFMotion::JSON.get(url_string) do |result|
      if result.success?
        @returned_data = []
        result.object["data"].each do |r|
          @returned_data << {
            title: [r["reservoirName"], r["immediatePercentage"]].join(":")
          }
        end
      else
        @returned_data = ['failed','d']
      end
    end 
    stop_refreshing
    update_table_data      
  end

end
class ReservoirsScreen@返回的_dataAFMotion使用异步回调,因此您的代码实际上是这样执行的:

  • 开始刷新
  • 发送对JSON的请求
  • 立即停止刷新
  • 更新表数据
  • 使用JSON接收响应
相反,将
stop\u刷新
update\u table\u数据
行移动到回调中(if result.success?
/
else
块),这样在收到JSON响应之前不会执行它们:

if result.success?
  @returned_data = []
  result.object["data"].each do |r|
    @returned_data << {
      title: [r["reservoirName"], r["immediatePercentage"]].join(":")
    }
  end
  update_table_data
  stop_refreshing
else
  @returned_data = ['failed','d']
  update_table_data
  stop_refreshing
end
如果result.success?
@返回的_数据=[]
result.object[“data”]。每个do | r|
@返回的数据