Module: ProMotion::ScreenNavigation
- Included in:
- ScreenModule
- Defined in:
- lib/ProMotion/screen/screen_navigation.rb
Instance Method Summary collapse
- #app ⇒ Object
- #app_delegate ⇒ Object
- #close_screen(args = {}) ⇒ Object (also: #close)
- #open_in_split_screen(screen, args) ⇒ Object
- #open_modal(screen, args = {}) ⇒ Object
- #open_root_screen(screen) ⇒ Object
- #open_screen(screen, args = {}) ⇒ Object (also: #open)
- #push_view_controller(vc, nav_controller = nil, animated = true) ⇒ Object
- #send_on_return(args = {}) ⇒ Object
Instance Method Details
#app ⇒ Object
35 36 37 |
# File 'lib/ProMotion/screen/screen_navigation.rb', line 35 def app UIApplication.sharedApplication end |
#app_delegate ⇒ Object
39 40 41 |
# File 'lib/ProMotion/screen/screen_navigation.rb', line 39 def app_delegate UIApplication.sharedApplication.delegate end |
#close_screen(args = {}) ⇒ Object Also known as: close
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/ProMotion/screen/screen_navigation.rb', line 43 def close_screen(args = {}) args ||= {} args = { sender: args } unless args.is_a?(Hash) args[:animated] = true unless args.has_key?(:animated) if self.modal? close_nav_screen args if self. close_modal_screen args elsif self. close_nav_screen args send_on_return(args) else PM.logger.warn "Tried to close #{self.to_s}; however, this screen isn't modal or in a nav bar." end end |
#open_in_split_screen(screen, args) ⇒ Object
21 22 23 24 25 |
# File 'lib/ProMotion/screen/screen_navigation.rb', line 21 def open_in_split_screen(screen, args) self.split_screen.detail_screen = screen if args[:in_detail] self.split_screen.master_screen = screen if args[:in_master] args[:in_detail] || args[:in_master] end |
#open_modal(screen, args = {}) ⇒ Object
31 32 33 |
# File 'lib/ProMotion/screen/screen_navigation.rb', line 31 def open_modal(screen, args = {}) open screen, args.merge({ modal: true }) end |
#open_root_screen(screen) ⇒ Object
27 28 29 |
# File 'lib/ProMotion/screen/screen_navigation.rb', line 27 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 |
# File 'lib/ProMotion/screen/screen_navigation.rb', line 4 def open_screen(screen, args = {}) args = { animated: true }.merge(args) # Apply properties to instance screen = set_up_screen_for_open(screen, args) ensure_wrapper_controller_in_place(screen, args) opened ||= open_in_split_screen(screen, args) if self.split_screen opened ||= open_root_screen(screen) if args[:close_all] opened ||= present_modal_view_controller(screen, args) if args[:modal] opened ||= open_in_tab(screen, args[:in_tab]) if args[:in_tab] opened ||= push_view_controller(screen, self., !!args[:animated]) if self. opened ||= open_root_screen(screen. || screen) screen end |
#push_view_controller(vc, nav_controller = nil, animated = true) ⇒ Object
73 74 75 76 77 78 79 80 81 |
# File 'lib/ProMotion/screen/screen_navigation.rb', line 73 def push_view_controller(vc, nav_controller=nil, animated=true) 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. return if nav_controller.topViewController == vc vc.first_screen = false if vc.respond_to?(:first_screen=) nav_controller.pushViewController(vc, animated: animated) end |
#send_on_return(args = {}) ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'lib/ProMotion/screen/screen_navigation.rb', line 63 def send_on_return(args = {}) if self.parent_screen && self.parent_screen.respond_to?(:on_return) if args && self.parent_screen.method(:on_return).arity != 0 self.parent_screen.send(:on_return, args) else self.parent_screen.send(:on_return) end end end |