Skip to content

Latest commit

 

History

History
137 lines (85 loc) · 3.7 KB

README.md

File metadata and controls

137 lines (85 loc) · 3.7 KB

HLTabPagerViewController

CI Status Version License Platform

Animated gif

Installation

CocoaPods (recommended)

Add the following line to your Podfile:

pod 'HLTabPagerViewController', '~> 0.1.1'

And then add import HLTabPagerViewController to your view controller.

Usage

To use it, you should create a view controller that extends HLTabPagerViewController . Write your viewDidLoad as follows:

class BaseViewController: HLTabPagerViewController {
  override func viewDidLoad() {
    super.viewDidLoad()

    self.dataSource = self
    self.delegate 	= self

    self.reloadData()   
  }
}

Then, implement the HLTabPagerDataSource to populate the view. The data source has a couple of required methods, and a few more optional.

extension BaseViewController: HLTabPagerDataSource, HLTabPagerDelegate {
    
    func numberOfViewControllers() -> Int{
        
        return dataArray.count
    }
    
    func viewController(forIndex index:Int) -> UIViewController{
        
        let contentVC = T1ViewController()
        
        contentVC.view.backgroundColor = dataArray[index].bgColor
        
        return contentVC
    }
}

Data Source

The data source methods will allow you to provide content to your tab pager view controller.

Required Methods

func numberOfViewControllers() -> Int

func viewController(forIndex index: Int) -> UIViewController

Optional Methods

Note that despite being optional, the tab setup will require you to return either a UIView or an String to work. Pls implement either viewForTabAtIndex: or titleForTabAtIndex:

optional func viewForTab(atIndex index: Int) -> UIView

optional func titleForTab(atIndex index: Int) -> String

// Default value: 44.0
optional func tabHeight() -> CGFloat

// Default value: UIColor.orangeColor
optional func tabColor() -> UIColor

//UIColor(white: 0.95, alpha: 1)
optional func tabBackgroundColor() -> UIColor

//UIFont(name: "HelveticaNeue-Thin", size: 20)!
optional func titleFont() -> UIFont

// Default value: UIColor.black
optional func titleColor() -> UIColor

// Default: 2.0
optional func bottomLineHeight() -> CGFloat

Delegate

The delegate methods report events that happened in the tab pager view controller.

Optional Methods

optional func tabPager(_ tabPager: HLTabPagerViewController, willTransitionToTab atIndex: Int)
optional func tabPager(_ tabPager: HLTabPagerViewController, didTransitionToTab atIndex: Int)

Open

There are two public methods:

open func reloadData()
open func selectTabbar(atIndex index: Int, animation: Bool = false) 

reloadData will refresh the content of the tab pager view controller. Make sure to provide the data source before reloading the content.

selectTabbar(atIndex:, animation:) Selects a tab in the header view identified by index

And these public properties:

open weak var dataSource: HLTabPagerDataSource?
open weak var delegate: HLTabPagerDelegate?

open var selectedIndex = 0 // will return the index of the current selected tab.

License

This code is distributed under the terms and conditions of the MIT license.