Module: ProMotion::ScreenNavigation
- Included in:
- ScreenModule
- Defined in:
- lib/ProMotion/screen_helpers/screen_navigation.rb
Instance Method Summary collapse
- #app_delegate ⇒ Object
- #close_screen(args = {}) ⇒ Object (also: #close)
- #open_root_screen(screen) ⇒ Object
- #open_screen(screen, args = {}) ⇒ Object (also: #open)
- #open_view_controller(screen) ⇒ Object
- #push_view_controller(vc, nav_controller = nil) ⇒ Object
- #send_on_return(args = {}) ⇒ Object
Instance Method Details
#app_delegate ⇒ Object
43 44 45 |
# File 'lib/ProMotion/screen_helpers/screen_navigation.rb', line 43 def app_delegate UIApplication.sharedApplication.delegate end |
#close_screen(args = {}) ⇒ Object Also known as: close
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/ProMotion/screen_helpers/screen_navigation.rb', line 47 def close_screen(args = {}) args ||= {} args[:animated] ||= true if self.is_modal? close_modal_screen args elsif self. close_nav_screen args send_on_return(args) # TODO: this would be better implemented in a callback or view_did_disappear. else PM.logger.warn "Tried to close #{self.to_s}; however, this screen isn't modal or in a nav bar." end end |
#open_root_screen(screen) ⇒ Object
39 40 41 |
# File 'lib/ProMotion/screen_helpers/screen_navigation.rb', line 39 def open_root_screen(screen) app_delegate.open_root_screen(screen) end |
#open_screen(screen, args = {}) ⇒ Object Also known as: open
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/ProMotion/screen_helpers/screen_navigation.rb', line 4 def open_screen(screen, args = {}) # Apply properties to instance screen = setup_screen_for_open(screen, args) ensure_wrapper_controller_in_place(screen, args) screen.send(:on_load) if screen.respond_to?(:on_load) animated = args[:animated] || true if args[:in_detail] && self.split_screen self.split_screen.detail_screen = screen elsif args[:in_master] && self.split_screen self.split_screen.master_screen = screen elsif args[:close_all] open_root_screen screen elsif args[:modal] present_modal_view_controller screen, animated elsif args[:in_tab] && self. screen, args[:in_tab] elsif self. push_view_controller screen else open_root_screen screen.pm_main_controller end end |
#open_view_controller(screen) ⇒ Object
75 76 77 78 |
# File 'lib/ProMotion/screen_helpers/screen_navigation.rb', line 75 def open_view_controller(screen) PM.logger.deprecated "Use `open_root_screen` instead of the more ambiguous `open_view_controller`." open_root_screen screen end |
#push_view_controller(vc, nav_controller = nil) ⇒ Object
80 81 82 83 84 85 86 87 |
# File 'lib/ProMotion/screen_helpers/screen_navigation.rb', line 80 def push_view_controller(vc, nav_controller=nil) unless self. PM.logger.error "You need a nav_bar if you are going to push #{vc.to_s} onto it." end nav_controller ||= self. vc.first_screen = false if vc.respond_to?(:first_screen=) nav_controller.pushViewController(vc, animated: true) end |
#send_on_return(args = {}) ⇒ Object
65 66 67 68 69 70 71 72 73 |
# File 'lib/ProMotion/screen_helpers/screen_navigation.rb', line 65 def send_on_return(args = {}) if self.parent_screen && self.parent_screen.respond_to?(:on_return) if args self.parent_screen.send(:on_return, args) else self.parent_screen.send(:on_return) end end end |