0

我正在开发一个包含火车站列表的应用程序,当您从列表中选择一个车站时,应该有一个显示更多信息的视图。

对于我正在使用的列表PM::TableScreen

在那里,当用户选择一个电台时,我会调用这个方法:

def select_station(station)
  open StationScreen.alloc.initWithStation(station)
end

以及对应的StationScreen

class StationScreen < UIViewController

  def initWithStation(station)
    init.tap do
      @station = station
    end
  end

  def loadView
    self.title = @station[:name]
    @layout = StationLayout.new
    self.view = @layout.view
  end

end

这会产生以下结果:

在此处输入图像描述

单击后退按钮时效果很流畅。

现在,我想切换到 ProMotion::Screen

StationScreen 变为:

class StationScreen < PM::Screen

  attr_accessor :station

  def on_load
    self.title = @station[:name]
    @layout = StationLayout.new
    self.view = @layout.view
  end

end

和 select_station 方法:

def select_station(station)
  open StationScreen.new(station: station)
end

现在后面的动画很奇怪。请注意图像如何仍然显示一段时间,然后消失。

在此处输入图像描述

我做错了什么以及如何正确实施它ProMotion::Screen

更新1:这修复了它。ProMotion 的示例是建议错误的事情。

def load_view
  self.title = @station[:name]
  @layout = StationLayout.new
  self.view = @layout.view
end

这是正确的方法吗?

4

1 回答 1

0

经过一些实验,我明白了。解决它的方法不止一种:

1) 与on_load。这里的关键是告诉布局什么是根视图。然后它可以正确地弄清楚如何正确地做后面的动画。如果你不给它根,就像我在开始时所做的那样 - 后退动画可能会中断。(至少我是这么理解的)。

def on_load
  @layout = StationLayout.new(root: self.view)
  @layout.build
end

2) 与load_view。在这里,由于某种原因,它可以在不指定根视图的情况下正常工作。我猜当您将 self.view 分配给布局视图时,它会自动发生。

def load_view
  @layout = StationLayout.new
  self.view = @layout.view
end

我最终使用了on_load.

于 2015-01-31T11:29:00.233 回答