Rubymotion “加载时”回调中的“刷新时”回调未刷新Tabledata
我的tableview不会重新加载数据,它只显示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
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|
@返回的数据