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次に、メソッド(スーパーへの呼び出しとその内部の自己の戻り)が残っていない限り、セルクラスからすべてを削除しました。セルはそのままでした。これは、私のセルの設計がセルの設計に影響を与えないことを意味します。セルクラスを正しい方法で宣言できなかったのでしょうか? ありがとう!

4

1 に答える 1

1

ProMotion の部分を正しく行っているようです。PM のどのバージョンを使用していますか?

いくつかのデバッグ手順:

  1. 内のすべてをコメントアウトしてMyCell、タイトルが表示されるかどうかを確認します。
  2. もしそうなら、あなたは MotionLayout で何か間違ったことをしています。
  3. それでも機能しない場合は、PM バグであり、問​​題を報告できます。

あなたの問題は、ProMotion ではなく、MotionLayout にあると感じています。

于 2014-06-09T14:48:11.390 に答える