0

我正在使用 RubyMotion 和 ProMotion 构建一个带有自定义单元格的 tableView。我无法弄清楚为什么没有一个细胞是可见的。当我不尝试使用自定义单元类时,标题标签是可见的。我在这里想念什么?谢谢!这是我的代码:

桌面屏幕

class HomeScreen < PM::TableScreen
  title 'Overview'

  def on_load
    @welcome_label = UILabel.new
    @welcome_label.text = 'Welcome to PushUp'
  end

  def table_data
    data1 = [1, 2, 3]
    data = [{ number: 1, date: '1.2.2014' }, { number: 5, date: '2.2.2014' }]

    [{
        title: 'PushUps',
        cells:
                   data.map do |e|
                     { cell_class: MyCell, title: e[:anzahl].to_s, date: e[:datum] }
                   end
     }]
  end
end

自定义单元格:

class MyCell < PM::TableViewCell
  attr_accessor :title, :detail

  def layoutSubviews
    @title = newTitleLabel
    @detail = newDetailLabel
    addLabelsToSubview
  end

  def addLabelsToSubview
    Motion::Layout.new do |layout|
      layout.view self.contentView
      layout.subviews "title" => title, "detail" => detail
      layout.vertical "|[title]|"
      layout.vertical "|[detail]|"
      layout.horizontal "|-[title]-10-[detail]-|"
    end
  end

  def newTitleLabel
    label = UILabel.alloc.init
    label.font = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
    label
  end

  def newDetailLabel
    label = UILabel.alloc.init
    label.font = UIFont.preferredFontForTextStyle(UIFontTextStyleFootnote)
    label
  end
end

更新

真的很奇怪,今天早上我扫地时,单元格显示了 2 个标签。他们都坐在左边,我认为这是某种标准的 iOS 单元设计,所以它不是我创建的。但他们有我给他们的价值观。

然后我从单元类中删除了所有内容,除非该initWithStyle方法(调用 super 并在其中返回 self)。细胞保持不变。这意味着我的单元设计对单元的设计没有影响。我是否可能未能以正确的方式声明单元类?谢谢!

4

1 回答 1

1

看来您正在正确执行 ProMotion 部分。你用的是什么版本的PM?

一些调试步骤:

  1. 注释掉你里面的所有东西MyCell,看看它是否显示标题。
  2. 如果是这样,那么你在 MotionLayout 上做错了。
  3. 如果它仍然不起作用,那么它是一个 PM 错误,您可以提出问题。

我感觉您的问题出在 MotionLayout,而不是 ProMotion。

于 2014-06-09T14:48:11.390 回答