3

我只使用促销菜单的自述文件中显示的代码做了一个新项目。我有这个 :

# app_delegate.rb
class AppDelegate < PM::Delegate
  def on_load(app, options)
    @menu = open MenuDrawer
  end

  def show_menu
    @menu.show :left
  end
end

#menu_drawer.rb
class MenuDrawer < PM::Menu::Drawer

  def setup
    self.center = HomeScreen.new(nav_bar: true)
    self.left = NavigationScreen
    self.to_show = [:pan_bezel, :pan_nav_bar]
    self.transition_animation = :swinging_door
    self.max_left_width = 250
    self.shadow = false
  end

end

#navigation_screen.rb
class NavigationScreen < ProMotion::TableScreen

  def table_data
    [{
      title: nil,
      cells: [{
        title: 'OVERWRITE THIS METHOD',
        action: :swap_center_controller,
        arguments: HomeScreen
      }]
    }]
  end

  def swap_center_controller(screen_class)
    app_delegate.menu.center_controller = screen_class
  end

end

我的应用程序正在运行,但没有侧边栏,您可以在此处看到:

ios模拟器屏幕截图 2015-03-12 17 36 39

我错过了什么 ?

4

1 回答 1

4

不,你所拥有的应该是有效的。您必须平移挡板或导航栏以显示左侧控制器(首次打开应用程序时隐藏)。我一直在考虑在示例中添加一个菜单按钮以使其更清晰。以下是可能的工作方式:

# home_screen.rb
class HomeScreen < PM::Screen
  title "Home"

  def on_load
    set_nav_bar_button :right, title: "Menu", action: :open_menu
  end

  def open_menu
    app_delegate.show_menu
  end
end

# navigation_screen.rb
class NavigationScreen < ProMotion::TableScreen
  def table_data
    [{
      title: nil,
      cells: [{
        title: 'HomeScreen',
        action: :swap_center_controller,
        arguments: HomeScreen.new(nav_bar: true)
      },{
        title: 'HelpScreen',
        action: :swap_center_controller,
        arguments: HelpScreen.new(nav_bar: true)
      }]
    }]
  end

  def swap_center_controller(screen)
    app_delegate.menu.center_controller = screen
    app_delegate.menu.hide
  end
end

您的AppDelegateandMenuDrawer将保持不变。

于 2015-03-18T19:08:54.057 回答