From bf7930248ca767f3f6a964a0597969c8c18700fc Mon Sep 17 00:00:00 2001 From: Kevin VanGelder Date: Fri, 5 Dec 2014 14:57:05 -0800 Subject: [PATCH] implemented nav_bar_button class method RE #272 --- app/test_screens/detail_screen.rb | 2 ++ lib/ProMotion/screen/screen_module.rb | 14 ++++++++++++++ spec/unit/screen_helpers_spec.rb | 5 +++++ 3 files changed, 21 insertions(+) diff --git a/app/test_screens/detail_screen.rb b/app/test_screens/detail_screen.rb index 000805a..c42cf0b 100644 --- a/app/test_screens/detail_screen.rb +++ b/app/test_screens/detail_screen.rb @@ -1,3 +1,5 @@ class DetailScreen < PM::Screen title "Detail" + + nav_bar_button :right, title: "More", style: :plain, action: :back end diff --git a/lib/ProMotion/screen/screen_module.rb b/lib/ProMotion/screen/screen_module.rb index 712dc26..ce69a48 100644 --- a/lib/ProMotion/screen/screen_module.rb +++ b/lib/ProMotion/screen/screen_module.rb @@ -13,6 +13,7 @@ module ProMotion resolve_title apply_properties(args) add_nav_bar(args) if args[:nav_bar] + add_nav_bar_buttons tab_bar_setup try :screen_setup try :on_init @@ -46,6 +47,10 @@ module ProMotion end end + def add_nav_bar_buttons + set_nav_bar_button(self.class.get_nav_bar_button[:side], self.class.get_nav_bar_button) if self.class.get_nav_bar_button + end + def status_bar_hidden(hidden) UIApplication.sharedApplication.setStatusBarHidden(hidden, withAnimation:self.class.status_bar_animation) end @@ -229,6 +234,15 @@ module ProMotion def status_bar_animation @status_bar_animation || UIStatusBarAnimationSlide end + + def nav_bar_button(side, args={}) + @nav_bar_button_args = args + @nav_bar_button_args[:side] = side + end + + def get_nav_bar_button + @nav_bar_button_args + end end def self.included(base) diff --git a/spec/unit/screen_helpers_spec.rb b/spec/unit/screen_helpers_spec.rb index 3b298d3..5396706 100644 --- a/spec/unit/screen_helpers_spec.rb +++ b/spec/unit/screen_helpers_spec.rb @@ -88,6 +88,11 @@ describe "screen helpers" do end end + + it "allows setting a nav_bar_button with a class method" do + screen = DetailScreen.new(nav_bar: true) + screen.navigationItem.rightBarButtonItem.class.should == UIBarButtonItem + end end describe "screen navigation" do