Skip to content

Commit 7cf0e9b

Browse files
authored
Merge pull request #64 from Yalantis/develop
Develop
2 parents 6ad93cc + f3d9a24 commit 7cf0e9b

File tree

2 files changed

+36
-21
lines changed

2 files changed

+36
-21
lines changed

ColorMatchTabs/Classes/ViewController/ColorMatchTabsViewController.swift

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,29 @@ public protocol ColorMatchTabsViewControllerDataSource: class {
2121

2222
}
2323

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+
2436
open class ColorMatchTabsViewController: UITabBarController {
2537

26-
@IBInspectable open weak var dataSource: ColorMatchTabsViewControllerDataSource? {
38+
@IBInspectable open weak var colorMatchTabDataSource: ColorMatchTabsViewControllerDataSource? {
2739
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
3042
}
3143
}
3244

45+
@IBInspectable open weak var colorMatchTabDelegate: ColorMatchTabsViewControllerDelegate?
46+
3347
@IBInspectable open var scrollEnabled = true {
3448
didSet {
3549
updateScrollEnabled()
@@ -109,7 +123,7 @@ open class ColorMatchTabsViewController: UITabBarController {
109123
private extension ColorMatchTabsViewController {
110124

111125
func setupIcons() {
112-
guard let dataSource = dataSource else {
126+
guard let dataSource = colorMatchTabDataSource else {
113127
return
114128
}
115129

@@ -155,7 +169,7 @@ private extension ColorMatchTabsViewController {
155169
}
156170

157171
func updateNavigationBar(forSelectedIndex index: Int) {
158-
let color = dataSource?.tabsViewController(self, tintColorAt: index) ?? .white
172+
let color = colorMatchTabDataSource?.tabsViewController(self, tintColorAt: index) ?? .white
159173

160174
titleLabel.textColor = color
161175
_view.scrollMenu.backgroundColor = color.withAlphaComponent(0.2)
@@ -185,9 +199,9 @@ private extension ColorMatchTabsViewController {
185199

186200
let image: UIImage?
187201
if index == self._view.tabs.selectedSegmentIndex {
188-
image = self.dataSource?.tabsViewController(self, hightlightedIconAt: index)
202+
image = self.colorMatchTabDataSource?.tabsViewController(self, hightlightedIconAt: index)
189203
} else {
190-
image = self.dataSource?.tabsViewController(self, iconAt: index)
204+
image = self.colorMatchTabDataSource?.tabsViewController(self, iconAt: index)
191205
}
192206
iconImageView.image = image
193207
},
@@ -220,7 +234,7 @@ private extension ColorMatchTabsViewController {
220234
initialSpringVelocity: 3,
221235
options: [],
222236
animations: {
223-
iconImageView.image = self.dataSource?.tabsViewController(self, hightlightedIconAt: index)
237+
iconImageView.image = self.colorMatchTabDataSource?.tabsViewController(self, hightlightedIconAt: index)
224238
iconImageView.center = CGPoint(
225239
x: iconImageView.center.x,
226240
y: iconImageView.center.y + self.view.frame.height / 2
@@ -261,6 +275,7 @@ extension ColorMatchTabsViewController: ScrollMenuDelegate {
261275
if _view.tabs.selectedSegmentIndex != index {
262276
_view.tabs.selectedSegmentIndex = index
263277
}
278+
colorMatchTabDelegate?.didSelectItemAt(index)
264279
}
265280

266281
}
@@ -292,63 +307,63 @@ extension ColorMatchTabsViewController: UIViewControllerTransitioningDelegate {
292307
extension ColorMatchTabsViewController: ColorTabsDataSource {
293308

294309
open func numberOfItems(inTabSwitcher tabSwitcher: ColorTabs) -> Int {
295-
return dataSource?.numberOfItems(inController: self) ?? 0
310+
return colorMatchTabDataSource?.numberOfItems(inController: self) ?? 0
296311
}
297312

298313
open func tabSwitcher(_ tabSwitcher: ColorTabs, titleAt index: Int) -> String {
299-
return dataSource!.tabsViewController(self, titleAt: index)
314+
return colorMatchTabDataSource!.tabsViewController(self, titleAt: index)
300315
}
301316

302317
open func tabSwitcher(_ tabSwitcher: ColorTabs, iconAt index: Int) -> UIImage {
303-
return dataSource!.tabsViewController(self, iconAt: index)
318+
return colorMatchTabDataSource!.tabsViewController(self, iconAt: index)
304319
}
305320

306321
open func tabSwitcher(_ tabSwitcher: ColorTabs, hightlightedIconAt index: Int) -> UIImage {
307-
return dataSource!.tabsViewController(self, hightlightedIconAt: index)
322+
return colorMatchTabDataSource!.tabsViewController(self, hightlightedIconAt: index)
308323
}
309324

310325
open func tabSwitcher(_ tabSwitcher: ColorTabs, tintColorAt index: Int) -> UIColor {
311-
return dataSource!.tabsViewController(self, tintColorAt: index)
326+
return colorMatchTabDataSource!.tabsViewController(self, tintColorAt: index)
312327
}
313328

314329
}
315330

316331
extension ColorMatchTabsViewController: ScrollMenuDataSource {
317332

318333
open func numberOfItemsInScrollMenu(_ scrollMenu: ScrollMenu) -> Int {
319-
return dataSource?.numberOfItems(inController: self) ?? 0
334+
return colorMatchTabDataSource?.numberOfItems(inController: self) ?? 0
320335
}
321336

322337
open func scrollMenu(_ scrollMenu: ScrollMenu, viewControllerAtIndex index: Int) -> UIViewController {
323-
return dataSource!.tabsViewController(self, viewControllerAt: index)
338+
return colorMatchTabDataSource!.tabsViewController(self, viewControllerAt: index)
324339
}
325340

326341
}
327342

328343
extension ColorMatchTabsViewController: CircleMenuDataSource {
329344

330345
open func numberOfItems(inMenu circleMenu: CircleMenu) -> Int {
331-
return dataSource?.numberOfItems(inController: self) ?? 0
346+
return colorMatchTabDataSource?.numberOfItems(inController: self) ?? 0
332347
}
333348

334349
open func circleMenu(_ circleMenu: CircleMenu, tintColorAt index: Int) -> UIColor {
335-
return dataSource!.tabsViewController(self, tintColorAt: index)
350+
return colorMatchTabDataSource!.tabsViewController(self, tintColorAt: index)
336351
}
337352

338353
}
339354

340355
extension ColorMatchTabsViewController: PopoverViewControllerDataSource {
341356

342357
open func numberOfItems(inPopoverViewController popoverViewController: PopoverViewController) -> Int {
343-
return dataSource?.numberOfItems(inController: self) ?? 0
358+
return colorMatchTabDataSource?.numberOfItems(inController: self) ?? 0
344359
}
345360

346361
open func popoverViewController(_ popoverViewController: PopoverViewController, iconAt index: Int) -> UIImage {
347-
return dataSource!.tabsViewController(self, iconAt: index)
362+
return colorMatchTabDataSource!.tabsViewController(self, iconAt: index)
348363
}
349364

350365
open func popoverViewController(_ popoverViewController: PopoverViewController, hightlightedIconAt index: Int) -> UIImage {
351-
return dataSource!.tabsViewController(self, hightlightedIconAt: index)
366+
return colorMatchTabDataSource!.tabsViewController(self, hightlightedIconAt: index)
352367
}
353368

354369
}

Example/Example/Classes/ViewControllers/ExampleViewContoller.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class ExampleViewContoller: ColorMatchTabsViewController {
1919
popoverViewController = ExamplePopoverViewController()
2020
popoverViewController?.delegate = self
2121

22-
dataSource = self
22+
colorMatchTabDataSource = self
2323
reloadData()
2424
}
2525

0 commit comments

Comments
 (0)