我开始使用RubyMotion和ProMotion。我正在构建一个表视图,我想将数据移到外部文件中,以便更容易管理。这是我到目前为止所做的:
class MasterScreen < PM::TableScreen
title 'States'
def table_data
[{
title: "Northwest States",
cells: [
{ title: "Oregon", action: :view_details, arguments: { state: @oregon }},
{ title: "Washington", action: :view_details, arguments: { state: @washington }}
]
}]
end
def view_details
open DetailScreen.new(nav_bar: true)
end
end
我想将状态名称(基本上是单元格标题)移动到我可以加载和迭代的YAML或JSON文件中。我怎样才能实现这样的目标呢?
更新:我设法弄清楚如何从文件中加载文字。
首先我将bubble-wrap
添加到Gemfile
并运行bundle install
。 BubbleWrap提供辅助方法App.resources_path
。
在my_app/resources/states.txt
中我有一个状态列表,用新行分隔:
Oregon
Washington
Foobar
在我的表格视图控制器中,我读取文件并将文件拆分为一系列行。
class MasterScreen < PM::TableScreen
title 'States'
def on_load
data = File.read("#{App.resources_path}/states.txt")
@states = data.lines
end
def table_data
[{
title: "Northwest States",
cells: @states.map do |state|
{
title: state,
action: :view_details,
arguments: { state: state }
}
end
}]
end
def view_details(arguments)
open DetailScreen.new(nav_bar: true, title: arguments[:state])
end
end
这有效,但这只是我试图做的一部分。我仍然希望使用像YAML这样的结构来表示标题和副标题。什么是RubyMotion做这种事情的方法?
答案 0 :(得分:0)
想出怎么做。我遇到了名为motion-yaml
的RubyMotion gem。只需将其添加到您的Gemfile中,将您的YAML文件添加到resources
目录,并像在Ruby中使用YAML一样使用它。
data = YAML.load(File.read("#{App.resources_path}/my_yaml_file.yml"))
注意:您需要将bubble-wrap
添加到Gemfile才能拥有App.resources_path
。我不确定在没有气泡包装的情况下是否有一种简单的方法。