如何从文件加载RubyMotion表视图单元格数据

时间:2014-05-27 05:04:46

标签: rubymotion rubymotion-promotion

我开始使用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做这种事情的方法?

1 个答案:

答案 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。我不确定在没有气泡包装的情况下是否有一种简单的方法。