diff --git a/lib/ProMotion/screen/screen_navigation.rb b/lib/ProMotion/screen/screen_navigation.rb index 533cd2c..72a4b0b 100644 --- a/lib/ProMotion/screen/screen_navigation.rb +++ b/lib/ProMotion/screen/screen_navigation.rb @@ -14,7 +14,7 @@ module ProMotion self.split_screen.detail_screen = screen elsif args[:in_master] && self.split_screen - self.split_screen.master_screen = screen + self.split_screen.master_screen = screen elsif args[:close_all] open_root_screen screen @@ -41,6 +41,10 @@ module ProMotion app_delegate.open_root_screen(screen) end + def pop_to_root(animated = false) + self.navigation_controller.popToRootViewControllerAnimated animated + end + def open_modal(screen, args = {}) open screen, args.merge({ modal: true }) end @@ -94,7 +98,7 @@ module ProMotion # Instantiate screen if given a class screen = screen.new if screen.respond_to?(:new) - + # Set parent screen.parent_screen = self if screen.respond_to?(:parent_screen=) diff --git a/spec/functional/func_screen_spec.rb b/spec/functional/func_screen_spec.rb index 9170857..cb8eec1 100644 --- a/spec/functional/func_screen_spec.rb +++ b/spec/functional/func_screen_spec.rb @@ -90,4 +90,24 @@ describe "ProMotion::Screen functional" do end end + it "should pop to the root view controller" do + root_vc = @controller.navigation_controller.visibleViewController + @controller.navigation_controller.viewControllers.count.should == 1 + @controller.open BasicScreen.new + wait 0.6 do + @controller.open BasicScreen.new + wait 0.6 do + @controller.open BasicScreen.new + wait 0.6 do + @controller.navigation_controller.viewControllers.count.should == 4 + @controller.pop_to_root true + wait 0.6 do + @controller.navigation_controller.viewControllers.count.should == 1 + @controller.navigation_controller.topViewController.should == root_vc + end + end + end + end + end + end