From 7d8377debdfd5014aa433fbecdd194678f79aa84 Mon Sep 17 00:00:00 2001 From: Mark Rickert Date: Tue, 12 Aug 2014 11:54:24 -0400 Subject: [PATCH] Fixes issue 524. You can pass a string or UIImage instance to title_image --- app/test_screens/uiimage_title_screen.rb | 15 +++++++++++++++ lib/ProMotion/screen/screen_module.rb | 4 ++-- spec/unit/image_title_screen.rb | 14 ++++++++++++-- 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 app/test_screens/uiimage_title_screen.rb diff --git a/app/test_screens/uiimage_title_screen.rb b/app/test_screens/uiimage_title_screen.rb new file mode 100644 index 0000000..4a6bf6d --- /dev/null +++ b/app/test_screens/uiimage_title_screen.rb @@ -0,0 +1,15 @@ +class UIImageTitleScreen < PM::Screen + attr_accessor :button_was_triggered + + title_image UIImage.imageNamed('test.png') + + def will_appear + self.button_was_triggered = false + add UILabel.alloc.initWithFrame([[ 10, 10 ], [ 300, 40 ]]), + text: "Label Here" + end + + def triggered_button + self.button_was_triggered = true + end +end diff --git a/lib/ProMotion/screen/screen_module.rb b/lib/ProMotion/screen/screen_module.rb index ec87b94..2756907 100644 --- a/lib/ProMotion/screen/screen_module.rb +++ b/lib/ProMotion/screen/screen_module.rb @@ -27,7 +27,7 @@ module ProMotion case self.class.title_type when :text then self.title = self.class.title when :view then self.navigationItem.titleView = self.class.title - when :image then self.navigationItem.titleView = UIImageView.alloc.initWithImage(UIImage.imageNamed(self.class.title)) + when :image then self.navigationItem.titleView = UIImageView.alloc.initWithImage(self.class.title) else PM.logger.warn("title expects string, UIView, or UIImage, but #{self.class.title.class.to_s} given.") end @@ -178,7 +178,7 @@ module ProMotion end def title_image(t) - @title = t + @title = t.is_a?(UIImage) ? t : UIImage.imageNamed(t) @title_type = :image end diff --git a/spec/unit/image_title_screen.rb b/spec/unit/image_title_screen.rb index e9bee78..9454a88 100644 --- a/spec/unit/image_title_screen.rb +++ b/spec/unit/image_title_screen.rb @@ -1,9 +1,19 @@ -describe "ProMotion::Screen UIImage title" do +describe "ProMotion::Screen UIImage string title" do def controller @controller = ImageTitleScreen.new(nav_bar: true) end - it "should allow an image title" do + it "should allow an image title as a String" do + controller.navigationItem.titleView.should.be.kind_of UIImageView + end +end + +describe "ProMotion::Screen UIImage title" do + def controller + @controller = UIImageTitleScreen.new(nav_bar: true) + end + + it "should allow an image title as a UIImage" do controller.navigationItem.titleView.should.be.kind_of UIImageView end end