@@ -21,15 +21,29 @@ public protocol ColorMatchTabsViewControllerDataSource: class {
21
21
22
22
}
23
23
24
+ public protocol ColorMatchTabsViewControllerDelegate : class {
25
+
26
+ func didSelectItemAt( _ index: Int )
27
+
28
+ }
29
+
30
+ extension ColorMatchTabsViewControllerDelegate {
31
+
32
+ func didSelectItemAt( _ index: Int ) { }
33
+
34
+ }
35
+
24
36
open class ColorMatchTabsViewController : UITabBarController {
25
37
26
- @IBInspectable open weak var dataSource : ColorMatchTabsViewControllerDataSource ? {
38
+ @IBInspectable open weak var colorMatchTabDataSource : ColorMatchTabsViewControllerDataSource ? {
27
39
didSet {
28
- _view. scrollMenu. dataSource = dataSource == nil ? nil : self
29
- _view. tabs. dataSource = dataSource == nil ? nil : self
40
+ _view. scrollMenu. dataSource = colorMatchTabDataSource == nil ? nil : self
41
+ _view. tabs. dataSource = colorMatchTabDataSource == nil ? nil : self
30
42
}
31
43
}
32
44
45
+ @IBInspectable open weak var colorMatchTabDelegate : ColorMatchTabsViewControllerDelegate ?
46
+
33
47
@IBInspectable open var scrollEnabled = true {
34
48
didSet {
35
49
updateScrollEnabled ( )
@@ -109,7 +123,7 @@ open class ColorMatchTabsViewController: UITabBarController {
109
123
private extension ColorMatchTabsViewController {
110
124
111
125
func setupIcons( ) {
112
- guard let dataSource = dataSource else {
126
+ guard let dataSource = colorMatchTabDataSource else {
113
127
return
114
128
}
115
129
@@ -155,7 +169,7 @@ private extension ColorMatchTabsViewController {
155
169
}
156
170
157
171
func updateNavigationBar( forSelectedIndex index: Int ) {
158
- let color = dataSource ? . tabsViewController ( self , tintColorAt: index) ?? . white
172
+ let color = colorMatchTabDataSource ? . tabsViewController ( self , tintColorAt: index) ?? . white
159
173
160
174
titleLabel. textColor = color
161
175
_view. scrollMenu. backgroundColor = color. withAlphaComponent ( 0.2 )
@@ -185,9 +199,9 @@ private extension ColorMatchTabsViewController {
185
199
186
200
let image : UIImage ?
187
201
if index == self . _view. tabs. selectedSegmentIndex {
188
- image = self . dataSource ? . tabsViewController ( self , hightlightedIconAt: index)
202
+ image = self . colorMatchTabDataSource ? . tabsViewController ( self , hightlightedIconAt: index)
189
203
} else {
190
- image = self . dataSource ? . tabsViewController ( self , iconAt: index)
204
+ image = self . colorMatchTabDataSource ? . tabsViewController ( self , iconAt: index)
191
205
}
192
206
iconImageView. image = image
193
207
} ,
@@ -220,7 +234,7 @@ private extension ColorMatchTabsViewController {
220
234
initialSpringVelocity: 3 ,
221
235
options: [ ] ,
222
236
animations: {
223
- iconImageView. image = self . dataSource ? . tabsViewController ( self , hightlightedIconAt: index)
237
+ iconImageView. image = self . colorMatchTabDataSource ? . tabsViewController ( self , hightlightedIconAt: index)
224
238
iconImageView. center = CGPoint (
225
239
x: iconImageView. center. x,
226
240
y: iconImageView. center. y + self . view. frame. height / 2
@@ -261,6 +275,7 @@ extension ColorMatchTabsViewController: ScrollMenuDelegate {
261
275
if _view. tabs. selectedSegmentIndex != index {
262
276
_view. tabs. selectedSegmentIndex = index
263
277
}
278
+ colorMatchTabDelegate? . didSelectItemAt ( index)
264
279
}
265
280
266
281
}
@@ -292,63 +307,63 @@ extension ColorMatchTabsViewController: UIViewControllerTransitioningDelegate {
292
307
extension ColorMatchTabsViewController : ColorTabsDataSource {
293
308
294
309
open func numberOfItems( inTabSwitcher tabSwitcher: ColorTabs ) -> Int {
295
- return dataSource ? . numberOfItems ( inController: self ) ?? 0
310
+ return colorMatchTabDataSource ? . numberOfItems ( inController: self ) ?? 0
296
311
}
297
312
298
313
open func tabSwitcher( _ tabSwitcher: ColorTabs , titleAt index: Int ) -> String {
299
- return dataSource !. tabsViewController ( self , titleAt: index)
314
+ return colorMatchTabDataSource !. tabsViewController ( self , titleAt: index)
300
315
}
301
316
302
317
open func tabSwitcher( _ tabSwitcher: ColorTabs , iconAt index: Int ) -> UIImage {
303
- return dataSource !. tabsViewController ( self , iconAt: index)
318
+ return colorMatchTabDataSource !. tabsViewController ( self , iconAt: index)
304
319
}
305
320
306
321
open func tabSwitcher( _ tabSwitcher: ColorTabs , hightlightedIconAt index: Int ) -> UIImage {
307
- return dataSource !. tabsViewController ( self , hightlightedIconAt: index)
322
+ return colorMatchTabDataSource !. tabsViewController ( self , hightlightedIconAt: index)
308
323
}
309
324
310
325
open func tabSwitcher( _ tabSwitcher: ColorTabs , tintColorAt index: Int ) -> UIColor {
311
- return dataSource !. tabsViewController ( self , tintColorAt: index)
326
+ return colorMatchTabDataSource !. tabsViewController ( self , tintColorAt: index)
312
327
}
313
328
314
329
}
315
330
316
331
extension ColorMatchTabsViewController : ScrollMenuDataSource {
317
332
318
333
open func numberOfItemsInScrollMenu( _ scrollMenu: ScrollMenu ) -> Int {
319
- return dataSource ? . numberOfItems ( inController: self ) ?? 0
334
+ return colorMatchTabDataSource ? . numberOfItems ( inController: self ) ?? 0
320
335
}
321
336
322
337
open func scrollMenu( _ scrollMenu: ScrollMenu , viewControllerAtIndex index: Int ) -> UIViewController {
323
- return dataSource !. tabsViewController ( self , viewControllerAt: index)
338
+ return colorMatchTabDataSource !. tabsViewController ( self , viewControllerAt: index)
324
339
}
325
340
326
341
}
327
342
328
343
extension ColorMatchTabsViewController : CircleMenuDataSource {
329
344
330
345
open func numberOfItems( inMenu circleMenu: CircleMenu ) -> Int {
331
- return dataSource ? . numberOfItems ( inController: self ) ?? 0
346
+ return colorMatchTabDataSource ? . numberOfItems ( inController: self ) ?? 0
332
347
}
333
348
334
349
open func circleMenu( _ circleMenu: CircleMenu , tintColorAt index: Int ) -> UIColor {
335
- return dataSource !. tabsViewController ( self , tintColorAt: index)
350
+ return colorMatchTabDataSource !. tabsViewController ( self , tintColorAt: index)
336
351
}
337
352
338
353
}
339
354
340
355
extension ColorMatchTabsViewController : PopoverViewControllerDataSource {
341
356
342
357
open func numberOfItems( inPopoverViewController popoverViewController: PopoverViewController ) -> Int {
343
- return dataSource ? . numberOfItems ( inController: self ) ?? 0
358
+ return colorMatchTabDataSource ? . numberOfItems ( inController: self ) ?? 0
344
359
}
345
360
346
361
open func popoverViewController( _ popoverViewController: PopoverViewController , iconAt index: Int ) -> UIImage {
347
- return dataSource !. tabsViewController ( self , iconAt: index)
362
+ return colorMatchTabDataSource !. tabsViewController ( self , iconAt: index)
348
363
}
349
364
350
365
open func popoverViewController( _ popoverViewController: PopoverViewController , hightlightedIconAt index: Int ) -> UIImage {
351
- return dataSource !. tabsViewController ( self , hightlightedIconAt: index)
366
+ return colorMatchTabDataSource !. tabsViewController ( self , hightlightedIconAt: index)
352
367
}
353
368
354
369
}
0 commit comments