Module: ProMotion::NavBarModule

Included in:
ScreenModule
Defined in:
lib/ProMotion/screen/nav_bar_module.rb

Instance Method Summary collapse

Instance Method Details

#add_nav_bar(args = {}) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/ProMotion/screen/nav_bar_module.rb', line 49

def add_nav_bar(args = {})
  args = self.class.get_nav_bar.merge(args)
  return unless args[:nav_bar] || args[:nav_controller]
  self.navigationController ||= begin
    self.first_screen = true if self.respond_to?(:first_screen=)
    nav_controller_class = args[:nav_controller] || NavigationController
    if nav_controller_class.is_a? Class
      nav = nav_controller_class.alloc.initWithRootViewController(self)
    else
      nav = nav_controller_class
      nav.setViewControllers([self], animated: false)
    end
    nav.setModalTransitionStyle(args[:transition_style]) if args[:transition_style]
    nav.setModalPresentationStyle(args[:presentation_style]) if args[:presentation_style]
    nav
  end
  self.navigationController.toolbarHidden = !args[:toolbar] unless args[:toolbar].nil?
end

Returns:

  • (Boolean)


4
5
6
# File 'lib/ProMotion/screen/nav_bar_module.rb', line 4

def nav_bar?
  !!self.navigationController
end


8
9
10
# File 'lib/ProMotion/screen/nav_bar_module.rb', line 8

def navigation_controller
  self.navigationController
end


12
13
14
# File 'lib/ProMotion/screen/nav_bar_module.rb', line 12

def navigation_controller=(nav)
  self.navigationController = nav
end


16
17
18
# File 'lib/ProMotion/screen/nav_bar_module.rb', line 16

def navigationController=(nav)
  @navigationController = nav
end

#set_nav_bar_button(side, args = {}) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/ProMotion/screen/nav_bar_module.rb', line 20

def set_nav_bar_button(side, args={})
  button = (args.is_a?(UIBarButtonItem)) ? args : create_toolbar_button(args)
  button.setTintColor args[:tint_color] if args.is_a?(Hash) && args[:tint_color]

  self.navigationItem.leftBarButtonItem = button if side == :left
  self.navigationItem.rightBarButtonItem = button if side == :right
  self.navigationItem.backBarButtonItem = button if side == :back

  button
end

#set_nav_bar_buttons(side, buttons = []) ⇒ Object



31
32
33
34
35
36
# File 'lib/ProMotion/screen/nav_bar_module.rb', line 31

def set_nav_bar_buttons(side, buttons=[])
  buttons = buttons.map{ |b| b.is_a?(UIBarButtonItem) ? b : create_toolbar_button(b) }.reverse

  self.navigationItem.setLeftBarButtonItems(buttons) if side == :left
  self.navigationItem.setRightBarButtonItems(buttons) if side == :right
end

#set_toolbar_items(buttons = [], animated = true) ⇒ Object Also known as: set_toolbar_buttons, set_toolbar_button



38
39
40
41
42
43
44
45
# File 'lib/ProMotion/screen/nav_bar_module.rb', line 38

def set_toolbar_items(buttons = [], animated = true)
  if buttons
    self.toolbarItems = Array(buttons).map{|b| b.is_a?(UIBarButtonItem) ? b : create_toolbar_button(b) }
    navigationController.setToolbarHidden(false, animated:animated)
  else
    navigationController.setToolbarHidden(true, animated:animated)
  end
end

#update_nav_bar_visibility(animated) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/ProMotion/screen/nav_bar_module.rb', line 68

def update_nav_bar_visibility(animated)
  return unless navigationController
  hidden = @screen_options[:hide_nav_bar]
  unless hidden.nil?
    navigationController.setNavigationBarHidden(hidden, animated: animated)
  end
end