Class: Bluesky::NavigationController

Inherits:
ViewController show all
Defined in:
lib/bluesky/navigation_controller.rb

Overview

Bluesky::NavigationController

Instance Attribute Summary

Attributes inherited from ViewController

#appearance, #children, #data, #parent

Instance Method Summary collapse

Methods inherited from ViewController

#add_child_view_controller, attribute, #begin_appearance_transition, #did_move_to_parent_view_controller, #dismiss, #dispatch, #end_appearance_transition, #force_update, #force_update?, inherited, #navigation_controller, #notify, #present, #refresh, #remove_from_parent_view_controller, #render, #show, #will_move_to_parent_view_controller

Methods included from DSL

tag

Constructor Details

#initialize(root_view_controller) ⇒ NavigationController

Returns a new instance of NavigationController.



8
9
10
11
12
# File 'lib/bluesky/navigation_controller.rb', line 8

def initialize(root_view_controller)
  raise 'NavigationController requires a root_view_controller' unless root_view_controller
  super
  add_child_view_controller(root_view_controller)
end

Instance Method Details

#pop_to_root_view_controllerObject



102
103
104
# File 'lib/bluesky/navigation_controller.rb', line 102

def pop_to_root_view_controller
  pop_to_view_controller(root_view_controller)
end

#pop_to_view_controller(view_controller) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/bluesky/navigation_controller.rb', line 85

def pop_to_view_controller(view_controller)
  index = @children.index(view_controller)
  count = index.nil? ? 0 : index + 1
  removed = @children[count..-1]
  @children = @children[0...count]
  removed.each { |child| child.begin_appearance_transition(false) }
  top_view_controller.begin_appearance_transition(@appearance == :appeared)
  force_update do
    top_view_controller.end_appearance_transition()
    removed.each do |child|
      child.parent = nil
      child.end_appearance_transition()
    end
  end
  return removed
end

#pop_view_controllerObject



72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/bluesky/navigation_controller.rb', line 72

def pop_view_controller
  pre { top_view_controller != root_view_controller }
  popped_view_controller = top_view_controller
  popped_view_controller.begin_appearance_transition(false)
  popped_view_controller.remove_from_parent_view_controller()
  top_view_controller.begin_appearance_transition(@appearance == :appeared)
  force_update do
    top_view_controller.end_appearance_transition()
    popped_view_controller.end_appearance_transition()
  end
  return popped_view_controller
end

#push_view_controller(view_controller) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/bluesky/navigation_controller.rb', line 60

def push_view_controller(view_controller)
  old_view_controller = top_view_controller
  old_view_controller.begin_appearance_transition(false)
  view_controller.begin_appearance_transition(@appearance == :appeared)
  add_child_view_controller(view_controller)
  force_update do
    view_controller.end_appearance_transition
    old_view_controller.end_appearance_transition
  end
  return
end

#root_view_controllerObject



38
39
40
# File 'lib/bluesky/navigation_controller.rb', line 38

def root_view_controller
  @children.first
end

#top_view_controllerObject



42
43
44
# File 'lib/bluesky/navigation_controller.rb', line 42

def top_view_controller
  @children.last
end

#viewObject



14
15
16
# File 'lib/bluesky/navigation_controller.rb', line 14

def view
  top_view_controller.view
end

#view_controllersObject



50
51
52
# File 'lib/bluesky/navigation_controller.rb', line 50

def view_controllers
  @children
end

#view_controllers=(controllers) ⇒ Object



54
55
56
57
58
# File 'lib/bluesky/navigation_controller.rb', line 54

def view_controllers=(controllers)
  index = @children.index(controllers.last)
  pop_to_root_view_controller(controllers.last) unless index.nil?
  @children.replace(controllers)
end

#view_did_appearObject



23
24
25
26
# File 'lib/bluesky/navigation_controller.rb', line 23

def view_did_appear
  super
  top_view_controller.end_appearance_transition
end

#view_did_disappearObject



33
34
35
36
# File 'lib/bluesky/navigation_controller.rb', line 33

def view_did_disappear
  super
  top_view_controller.end_appearance_transition
end

#view_will_appearObject



18
19
20
21
# File 'lib/bluesky/navigation_controller.rb', line 18

def view_will_appear
  super
  top_view_controller.begin_appearance_transition(true)
end

#view_will_disappearObject



28
29
30
31
# File 'lib/bluesky/navigation_controller.rb', line 28

def view_will_disappear
  super
  top_view_controller.begin_appearance_transition(false)
end

#visible_view_controllerObject



46
47
48
# File 'lib/bluesky/navigation_controller.rb', line 46

def visible_view_controller
  top_view_controller
end