ProMotion 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +14 -22
- data/.repl_history +0 -0
- data/Gemfile.lock +14 -0
- data/ProMotion.gemspec +4 -3
- data/README.md +252 -25
- data/Rakefile +5 -3
- data/app/app_delegate.rb +2 -2
- data/app/screens/home_screen.rb +14 -3
- data/app/screens/test_screen.rb +19 -3
- data/lib/ProMotion.rb +0 -8
- data/lib/ProMotion/version.rb +1 -1
- metadata +32 -31
- data/.c9revisions/lib/ProMotion.rb.c9save +0 -1
- data/.c9revisions/lib/ProMotion/AppDelegate.rb.c9save +0 -3
- data/.c9revisions/lib/ProMotion/classes/Screen.rb.c9save +0 -2
- data/lib/ProMotion/AppDelegate.rb +0 -60
- data/lib/ProMotion/Console.rb +0 -19
- data/lib/ProMotion/ProMotion.rb +0 -3
- data/lib/ProMotion/_ext/NavigationController.rb +0 -7
- data/lib/ProMotion/_ext/TableViewCell.rb +0 -16
- data/lib/ProMotion/_ext/TableViewController.rb +0 -54
- data/lib/ProMotion/_ext/ViewController.rb +0 -68
- data/lib/ProMotion/_modules/ScreenElements.rb +0 -31
- data/lib/ProMotion/_modules/ScreenNavigation.rb +0 -149
- data/lib/ProMotion/classes/Element.rb +0 -14
- data/lib/ProMotion/classes/Screen.rb +0 -206
- data/lib/ProMotion/classes/TableScreen.rb +0 -52
- data/lib/ProMotion/helpers/MeasureHelper.rb +0 -18
- data/lib/ProMotion/helpers/TabBar.rb +0 -99
- data/lib/ProMotion/helpers/ViewHelper.rb +0 -23
- data/lib/ProMotion/helpers/motion-table/1st/searchable_table.rb +0 -58
- data/lib/ProMotion/helpers/motion-table/1st/sectioned_table.rb +0 -219
- data/lib/ProMotion/helpers/motion-table/2nd/grouped_table.rb +0 -12
- data/lib/ProMotion/helpers/motion-table/2nd/plain_table.rb +0 -13
- data/lib/ProMotion/helpers/motion-table/console.rb +0 -26
- data/lib/ProMotion/helpers/system_helper.rb +0 -29
@@ -1,149 +0,0 @@
|
|
1
|
-
module ProMotion
|
2
|
-
module ScreenNavigation
|
3
|
-
def open_screen(screen, args = {})
|
4
|
-
# Instantiate screen if given a class instead
|
5
|
-
screen = screen.new if screen.respond_to?(:new)
|
6
|
-
|
7
|
-
screen.parent_screen = self
|
8
|
-
screen.view_controller.title = args[:title] if args[:title]
|
9
|
-
|
10
|
-
screen.add_nav_bar if args[:nav_bar]
|
11
|
-
|
12
|
-
unless args[:close_all] || args[:modal]
|
13
|
-
screen.navigation_controller ||= self.navigation_controller
|
14
|
-
screen.tab_bar ||= self.tab_bar
|
15
|
-
end
|
16
|
-
|
17
|
-
screen.modal = args[:modal] if args[:modal]
|
18
|
-
screen.send(:on_load) if screen.respond_to?(:on_load)
|
19
|
-
screen.view_controller.hidesBottomBarWhenPushed = args[:hide_tab_bar] if args[:hide_tab_bar]
|
20
|
-
|
21
|
-
if args[:close_all]
|
22
|
-
fresh_start(screen)
|
23
|
-
elsif args[:modal]
|
24
|
-
self.view_controller.presentModalViewController(screen.main_controller, animated:true)
|
25
|
-
elsif args[:in_tab] && self.tab_bar
|
26
|
-
vc = open_tab(args[:in_tab])
|
27
|
-
# $stderr.puts "Found a #{vc.to_s}"
|
28
|
-
if vc
|
29
|
-
if vc.is_a?(UINavigationController)
|
30
|
-
screen.navigation_controller = vc
|
31
|
-
push_view_controller(screen.view_controller, vc)
|
32
|
-
else
|
33
|
-
self.tab_bar.selectedIndex = vc.tabBarItem.tag
|
34
|
-
$stderr.puts "#{self.tab_bar.selectedIndex} is selected and should be #{vc.tabBarItem.tag}"
|
35
|
-
# PM::TabBar.replace_current_item(self.tab_bar, view_controller: screen.view_controller)
|
36
|
-
# TODO: This doesn't work yet.
|
37
|
-
end
|
38
|
-
else
|
39
|
-
$stderr.puts "No tab bar item '#{args[:in_tab]}'"
|
40
|
-
end
|
41
|
-
elsif self.navigation_controller
|
42
|
-
push_view_controller screen.view_controller
|
43
|
-
else
|
44
|
-
open_view_controller screen.main_controller
|
45
|
-
end
|
46
|
-
|
47
|
-
if screen.respond_to?(:on_opened)
|
48
|
-
screen.send(:on_opened)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def fresh_start(screen)
|
53
|
-
app_delegate.fresh_start(screen)
|
54
|
-
end
|
55
|
-
|
56
|
-
def app_delegate
|
57
|
-
UIApplication.sharedApplication.delegate
|
58
|
-
end
|
59
|
-
|
60
|
-
def close_screen(args = {})
|
61
|
-
args ||= {}
|
62
|
-
|
63
|
-
# Pop current view, maybe with arguments, if in navigation controller
|
64
|
-
previous_screen = self.parent_screen
|
65
|
-
if self.is_modal?
|
66
|
-
self.parent_screen.view_controller.dismissModalViewControllerAnimated(true)
|
67
|
-
elsif self.navigation_controller
|
68
|
-
if args[:to_screen]
|
69
|
-
self.navigation_controller.popToViewController(args[:to_screen].view_controller, animated: true)
|
70
|
-
previous_screen = args[:to_screen]
|
71
|
-
else
|
72
|
-
self.navigation_controller.popViewControllerAnimated(true)
|
73
|
-
end
|
74
|
-
else
|
75
|
-
Console.log("Tried to close #{self.to_s}; however, this screen isn't modal or in a nav bar.", withColor: Console::PURPLE_COLOR)
|
76
|
-
end
|
77
|
-
|
78
|
-
if previous_screen && previous_screen.respond_to?(:on_return)
|
79
|
-
if args
|
80
|
-
previous_screen.send(:on_return, args)
|
81
|
-
else
|
82
|
-
previous_screen.send(:on_return)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def tab_bar_controller(*screens)
|
88
|
-
tab_bar_controller = UITabBarController.alloc.init
|
89
|
-
|
90
|
-
view_controllers = []
|
91
|
-
tag_index = 0
|
92
|
-
screens.each do |s|
|
93
|
-
if s.is_a? Screen
|
94
|
-
s = s.new if s.respond_to?(:new)
|
95
|
-
s.view_controller.tabBarItem.tag = tag_index
|
96
|
-
view_controllers << s.main_controller
|
97
|
-
tag_index += 1
|
98
|
-
else
|
99
|
-
Console.log("Non-Screen passed into tab_bar_controller: #{s.to_s}", withColor: Console::RED_COLOR)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
tab_bar_controller.viewControllers = view_controllers
|
104
|
-
tab_bar_controller
|
105
|
-
end
|
106
|
-
|
107
|
-
# Open a UITabBarController with the specified screens as the
|
108
|
-
# root view controller of the current app.
|
109
|
-
# @param [Array] A comma-delimited list of screen classes or instances.
|
110
|
-
# @return [UITabBarController] (this may change in the future; please
|
111
|
-
# do not rely on it right now)
|
112
|
-
def open_tab_bar(*screens)
|
113
|
-
tab_bar = tab_bar_controller(*screens)
|
114
|
-
|
115
|
-
screens.each do |s|
|
116
|
-
s.parent_screen = self if s.respond_to?("parent_screen=")
|
117
|
-
s.tab_bar = tab_bar
|
118
|
-
s.on_load if s.respond_to?(:on_load)
|
119
|
-
end
|
120
|
-
|
121
|
-
open_view_controller(tab_bar)
|
122
|
-
|
123
|
-
screens.each do |s|
|
124
|
-
s.on_opened if s.respond_to?(:on_opened)
|
125
|
-
end
|
126
|
-
|
127
|
-
tab_bar
|
128
|
-
end
|
129
|
-
|
130
|
-
def open_tab(tab)
|
131
|
-
if tab.is_a? String
|
132
|
-
return PM::TabBar.select(self.tab_bar, title: tab)
|
133
|
-
else
|
134
|
-
$stderr.puts "Unable to open tab #{tab.to_s} because it isn't a string."
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
def open_view_controller(vc)
|
139
|
-
UIApplication.sharedApplication.delegate.load_root_view vc
|
140
|
-
end
|
141
|
-
|
142
|
-
def push_view_controller(vc, nav_controller=nil)
|
143
|
-
# vc.hidesBottomBarWhenPushed = true if args[:hide_tab_bar]
|
144
|
-
Console.log(" You need a nav_bar if you are going to push #{vc.to_s} onto it.", withColor: Console::RED_COLOR) unless self.navigation_controller
|
145
|
-
nav_controller ||= self.navigation_controller
|
146
|
-
nav_controller.pushViewController(vc, animated: true)
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
@@ -1,206 +0,0 @@
|
|
1
|
-
module ProMotion
|
2
|
-
# Instance methods
|
3
|
-
class Screen
|
4
|
-
include ProMotion::ScreenNavigation
|
5
|
-
include ProMotion::ScreenElements
|
6
|
-
include ProMotion::SystemHelper
|
7
|
-
|
8
|
-
attr_accessor :view_controller, :navigation_controller, :parent_screen, :first_screen, :tab_bar_item, :tab_bar, :modal
|
9
|
-
|
10
|
-
def initialize(args = {})
|
11
|
-
args.each do |k, v|
|
12
|
-
self.send("#{k}=", v) if self.respond_to?("#{k}=")
|
13
|
-
end
|
14
|
-
self.load_view_controller
|
15
|
-
self.view_controller.title = self.title
|
16
|
-
|
17
|
-
self.add_nav_bar if args[:nav_bar]
|
18
|
-
self.on_init if self.respond_to?(:on_init)
|
19
|
-
self
|
20
|
-
end
|
21
|
-
|
22
|
-
def is_modal?
|
23
|
-
self.modal == true
|
24
|
-
end
|
25
|
-
|
26
|
-
def has_nav_bar?
|
27
|
-
self.navigation_controller.nil? != true
|
28
|
-
end
|
29
|
-
|
30
|
-
# Note: this is overridden in TableScreen
|
31
|
-
def load_view_controller
|
32
|
-
self.view_controller ||= ViewController
|
33
|
-
end
|
34
|
-
|
35
|
-
def set_tab_bar_item(args = {})
|
36
|
-
self.tab_bar_item = args
|
37
|
-
refresh_tab_bar_item
|
38
|
-
end
|
39
|
-
|
40
|
-
def refresh_tab_bar_item
|
41
|
-
self.main_controller.tabBarItem = ProMotion::TabBar.tab_bar_item(self.tab_bar_item) if self.tab_bar_item
|
42
|
-
end
|
43
|
-
|
44
|
-
def add_nav_bar
|
45
|
-
self.navigation_controller = NavigationController.alloc.initWithRootViewController(self.view_controller)
|
46
|
-
self.first_screen = true
|
47
|
-
end
|
48
|
-
|
49
|
-
def set_nav_bar_right_button(title, args={})
|
50
|
-
args[:style] ||= UIBarButtonItemStyleBordered
|
51
|
-
args[:target] ||= self
|
52
|
-
args[:action] ||= nil
|
53
|
-
|
54
|
-
right_button = UIBarButtonItem.alloc.initWithTitle(title, style: args[:style], target: args[:target], action: args[:action])
|
55
|
-
self.view_controller.navigationItem.rightBarButtonItem = right_button
|
56
|
-
right_button
|
57
|
-
end
|
58
|
-
|
59
|
-
def set_nav_bar_left_button(title, args={})
|
60
|
-
args[:style] ||= UIBarButtonItemStyleBordered
|
61
|
-
args[:target] ||= self
|
62
|
-
args[:action] ||= nil
|
63
|
-
|
64
|
-
left_button = UIBarButtonItem.alloc.initWithTitle(title, style: args[:style], target: args[:target], action: args[:action])
|
65
|
-
self.view_controller.navigationItem.leftBarButtonItem = left_button
|
66
|
-
left_button
|
67
|
-
end
|
68
|
-
|
69
|
-
def view_controller=(vc)
|
70
|
-
vc = vc.alloc.initWithNibName(nil, bundle:nil) if vc.respond_to?(:alloc)
|
71
|
-
if self.navigation_controller && self.first_screen?
|
72
|
-
@view_controller = vc
|
73
|
-
self.navigation_controller = NavigationController.alloc.initWithRootViewController(self.view_controller)
|
74
|
-
else
|
75
|
-
@view_controller = vc
|
76
|
-
end
|
77
|
-
@view_controller.screen = self if @view_controller.respond_to?("screen=")
|
78
|
-
|
79
|
-
refresh_tab_bar_item
|
80
|
-
end
|
81
|
-
|
82
|
-
def first_screen?
|
83
|
-
self.first_screen == true
|
84
|
-
end
|
85
|
-
|
86
|
-
def set_view_controller(vc)
|
87
|
-
self.view_controller = vc
|
88
|
-
end
|
89
|
-
|
90
|
-
def view_did_load; end
|
91
|
-
def on_opened; end
|
92
|
-
|
93
|
-
def view_will_appear(animated)
|
94
|
-
ProMotion::Screen.current_screen = self
|
95
|
-
self.will_appear
|
96
|
-
end
|
97
|
-
def will_appear; end
|
98
|
-
|
99
|
-
def view_did_appear(animated)
|
100
|
-
ProMotion::Screen.current_screen = self
|
101
|
-
self.on_appear
|
102
|
-
end
|
103
|
-
def on_appear; end
|
104
|
-
|
105
|
-
def view_will_disappear(animated)
|
106
|
-
self.will_disappear
|
107
|
-
end
|
108
|
-
def will_disappear; end
|
109
|
-
|
110
|
-
def view_did_disappear(animated)
|
111
|
-
self.on_disappear
|
112
|
-
end
|
113
|
-
def on_disappear; end
|
114
|
-
|
115
|
-
def title
|
116
|
-
self.class.send(:get_title)
|
117
|
-
end
|
118
|
-
|
119
|
-
def title=(new_title)
|
120
|
-
self.class.title = new_title
|
121
|
-
self.view_controller.title = new_title if self.view_controller
|
122
|
-
end
|
123
|
-
|
124
|
-
def main_controller
|
125
|
-
return self.navigation_controller if self.navigation_controller
|
126
|
-
self.view_controller
|
127
|
-
end
|
128
|
-
|
129
|
-
def should_rotate(orientation)
|
130
|
-
case orientation
|
131
|
-
when UIInterfaceOrientationPortrait
|
132
|
-
return supported_orientation?("UIInterfaceOrientationPortrait")
|
133
|
-
when UIInterfaceOrientationLandscapeLeft
|
134
|
-
return supported_orientation?("UIInterfaceOrientationLandscapeLeft")
|
135
|
-
when UIInterfaceOrientationLandscapeRight
|
136
|
-
return supported_orientation?("UIInterfaceOrientationLandscapeRight")
|
137
|
-
when UIInterfaceOrientationPortraitUpsideDown
|
138
|
-
return supported_orientation?("UIInterfaceOrientationPortraitUpsideDown")
|
139
|
-
else
|
140
|
-
false
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
def will_rotate(orientation, duration)
|
145
|
-
end
|
146
|
-
|
147
|
-
def should_autorotate
|
148
|
-
false
|
149
|
-
end
|
150
|
-
|
151
|
-
def on_rotate
|
152
|
-
end
|
153
|
-
|
154
|
-
def supported_orientation?(orientation)
|
155
|
-
NSBundle.mainBundle.infoDictionary["UISupportedInterfaceOrientations"].include?(orientation)
|
156
|
-
end
|
157
|
-
|
158
|
-
def supported_orientations
|
159
|
-
ors = 0
|
160
|
-
NSBundle.mainBundle.infoDictionary["UISupportedInterfaceOrientations"].each do |ori|
|
161
|
-
case ori
|
162
|
-
when "UIInterfaceOrientationPortrait"
|
163
|
-
ors |= UIInterfaceOrientationMaskPortrait
|
164
|
-
when "UIInterfaceOrientationLandscapeLeft"
|
165
|
-
ors |= UIInterfaceOrientationMaskLandscapeLeft
|
166
|
-
when "UIInterfaceOrientationLandscapeRight"
|
167
|
-
ors |= UIInterfaceOrientationMaskLandscapeRight
|
168
|
-
when "UIInterfaceOrientationPortraitUpsideDown"
|
169
|
-
ors |= UIInterfaceOrientationMaskPortraitUpsideDown
|
170
|
-
end
|
171
|
-
end
|
172
|
-
ors
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
# Class methods
|
177
|
-
class Screen
|
178
|
-
class << self
|
179
|
-
def debug_mode
|
180
|
-
@debug_mode
|
181
|
-
end
|
182
|
-
|
183
|
-
def debug_mode=(v)
|
184
|
-
@debug_mode = v
|
185
|
-
end
|
186
|
-
|
187
|
-
def current_screen=(s)
|
188
|
-
@current_screen = s
|
189
|
-
end
|
190
|
-
|
191
|
-
def current_screen
|
192
|
-
@current_screen
|
193
|
-
end
|
194
|
-
|
195
|
-
def title(t)
|
196
|
-
@title = t
|
197
|
-
end
|
198
|
-
def title=(t)
|
199
|
-
@title = t
|
200
|
-
end
|
201
|
-
def get_title
|
202
|
-
@title ||= self.to_s
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|
206
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
module ProMotion
|
2
|
-
# Instance methods
|
3
|
-
class TableScreen < Screen
|
4
|
-
include MotionTable::PlainTable
|
5
|
-
include MotionTable::SearchableTable
|
6
|
-
|
7
|
-
def view
|
8
|
-
self.view_controller.view
|
9
|
-
end
|
10
|
-
|
11
|
-
def load_view_controller
|
12
|
-
check_table_data_method
|
13
|
-
|
14
|
-
self.view_controller ||= TableViewController
|
15
|
-
self.view_controller.view = self.createTableViewFromData(self.table_data)
|
16
|
-
if self.class.get_searchable
|
17
|
-
self.makeSearchable(contentController: self.view_controller, searchBar: self.class.get_searchable_params)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def check_table_data_method
|
22
|
-
Console.log("- table_data method needed in table view screen.", withColor: Console::RED_COLOR) unless self.respond_to?(:table_data)
|
23
|
-
end
|
24
|
-
|
25
|
-
def update_table_data
|
26
|
-
self.updateTableViewData(table_data)
|
27
|
-
end
|
28
|
-
|
29
|
-
class << self
|
30
|
-
def searchable(params={})
|
31
|
-
@searchable_params = params
|
32
|
-
@searchable = true
|
33
|
-
end
|
34
|
-
|
35
|
-
def get_searchable_params
|
36
|
-
@searchable_params ||= nil
|
37
|
-
end
|
38
|
-
|
39
|
-
def get_searchable
|
40
|
-
@searchable ||= false
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
class GroupedTableScreen < TableScreen
|
46
|
-
include MotionTable::GroupedTable
|
47
|
-
end
|
48
|
-
|
49
|
-
class SectionedTableScreen < TableScreen
|
50
|
-
include MotionTable::SectionedTable
|
51
|
-
end
|
52
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module ProMotion
|
2
|
-
class MeasureHelper
|
3
|
-
class << self
|
4
|
-
def content_height(view)
|
5
|
-
height = 0
|
6
|
-
view.subviews.each do |sub_view|
|
7
|
-
next if sub_view.isHidden
|
8
|
-
y = sub_view.frame.origin.y
|
9
|
-
h = sub_view.frame.size.height
|
10
|
-
if (y + h) > height
|
11
|
-
height = y + h
|
12
|
-
end
|
13
|
-
end
|
14
|
-
height
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,99 +0,0 @@
|
|
1
|
-
module ProMotion
|
2
|
-
class TabBar
|
3
|
-
class << self
|
4
|
-
def create_tab_bar_controller_from_data(data)
|
5
|
-
data = self.setTags(data)
|
6
|
-
|
7
|
-
tabBarController = UITabBarController.alloc.init
|
8
|
-
tabBarController.viewControllers = self.tab_controllers_from_data(data)
|
9
|
-
|
10
|
-
return tabBarController
|
11
|
-
end
|
12
|
-
|
13
|
-
def set_tags(data)
|
14
|
-
tag_number = 0
|
15
|
-
|
16
|
-
data.each do |d|
|
17
|
-
d[:tag] = tag_number
|
18
|
-
tag_number += 1
|
19
|
-
end
|
20
|
-
|
21
|
-
return data
|
22
|
-
end
|
23
|
-
|
24
|
-
def tab_bar_icon(icon, tag)
|
25
|
-
return UITabBarItem.alloc.initWithTabBarSystemItem(icon, tag: tag)
|
26
|
-
end
|
27
|
-
|
28
|
-
def tab_bar_icon_custom(title, image_name, tag)
|
29
|
-
icon_image = UIImage.imageNamed(image_name)
|
30
|
-
return UITabBarItem.alloc.initWithTitle(title, image:icon_image, tag:tag)
|
31
|
-
end
|
32
|
-
|
33
|
-
def tab_controllers_from_data(data)
|
34
|
-
mt_tab_controllers = []
|
35
|
-
|
36
|
-
data.each do |tab|
|
37
|
-
mt_tab_controllers << self.controller_from_tab_data(tab)
|
38
|
-
end
|
39
|
-
|
40
|
-
return mt_tab_controllers
|
41
|
-
end
|
42
|
-
|
43
|
-
def controller_from_tab_data(tab)
|
44
|
-
tab[:badgeNumber] = 0 unless tab[:badgeNumber]
|
45
|
-
tab[:tag] = 0 unless tab[:tag]
|
46
|
-
|
47
|
-
view_controller = tab[:view_controller]
|
48
|
-
view_controller = tab[:view_controller].alloc.init if tab[:view_controller].respond_to?(:alloc)
|
49
|
-
|
50
|
-
if tab[:navigationController]
|
51
|
-
controller = UINavigationController.alloc.initWithRootViewController(view_controller)
|
52
|
-
else
|
53
|
-
controller = view_controller
|
54
|
-
end
|
55
|
-
|
56
|
-
controller.tabBarItem = self.tabBarItem(tab)
|
57
|
-
controller.tabBarItem.title = controller.title unless tab[:title]
|
58
|
-
|
59
|
-
return controller
|
60
|
-
end
|
61
|
-
|
62
|
-
def tab_bar_item(tab)
|
63
|
-
title = "Untitled"
|
64
|
-
title = tab[:title] if tab[:title]
|
65
|
-
tab[:tag] ||= @current_tag ||= 0
|
66
|
-
@current_tag = tab[:tag] + 1
|
67
|
-
|
68
|
-
tab_bar_item = tab_bar_icon(tab[:system_icon], tab[:tag]) if tab[:system_icon]
|
69
|
-
tab_bar_item = tab_bar_icon_custom(title, tab[:icon], tab[:tag]) if tab[:icon]
|
70
|
-
|
71
|
-
tab_bar_item.badgeValue = tab[:badge_number].to_s unless tab[:badge_number].nil? || tab[:badge_number] <= 0
|
72
|
-
|
73
|
-
return tab_bar_item
|
74
|
-
end
|
75
|
-
|
76
|
-
def select(tab_bar_controller, title: title)
|
77
|
-
root_controller = nil
|
78
|
-
tab_bar_controller.viewControllers.each do |vc|
|
79
|
-
if vc.tabBarItem.title == title
|
80
|
-
tab_bar_controller.selectedViewController = vc
|
81
|
-
root_controller = vc
|
82
|
-
break
|
83
|
-
end
|
84
|
-
end
|
85
|
-
root_controller
|
86
|
-
end
|
87
|
-
|
88
|
-
def select(tab_bar_controller, tag: tag)
|
89
|
-
tab_bar_controller.selectedIndex = tag
|
90
|
-
end
|
91
|
-
|
92
|
-
def replace_current_item(tab_bar_controller, view_controller: vc)
|
93
|
-
controllers = NSMutableArray.arrayWithArray(tab_bar_controller.viewControllers)
|
94
|
-
controllers.replaceObjectAtIndex(tab_bar_controller.selectedIndex, withObject: vc)
|
95
|
-
tab_bar_controller.viewControllers = controllers
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|