MartyJunior 0.4.0

MartyJunior 0.4.0

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Apr 2017
SwiftSwift Version 3.0
SPMSupports SPM

Maintained by Taiki Suzuki.


Downloads

Total3,517
Week0
Month0

Installs

Apps182
Pod Tries11
Test Targets4
powered by Segment

GitHub

Stars242
Watchers9
Forks36
Issues4
Contributors2
Pull Requests0

Code

Files11
LOCLines of Code 1,190


MartyJunior

You can change tab contents with swipe gesture on middle of UITableView!!

Features

  • [x] Change tab middle of UITableView.
  • [x] Be able to scroll smoothly without two step.
  • [x] Auto fill content space when content size is not enough.
  • [x] Flexible and customizable top content.
  • [x] Customizable tab view.
  • [x] Navigation view.
  • [x] Support Swift3 (If you want to use it in Swift3

Installation

MartyJunior is available through CocoaPods. To install it, simply add the following line to your Podfile:

  pod "MartyJunior"

Usage

If you install from cocoapods, You have to write import MartyJunior.

Life cycle

viweDidLoad -> viewWillSetupForMartyJunior -> viewDidSetupForMartyJunior

You have to setup delegate, dataSource and so on in viewWillSetupForMartyJunior like this.

override func viewWillSetupForMartyJunior() {
    super.viewWillSetupForMartyJunior()
    delegate = self
    dataSource = self
    registerNibToAllTableViews(ProfileTweetCell.nib, forCellReuseIdentifier: ProfileTweetCell.ReuseIdentifier)
    registerNibToAllTableViews(ProfileUserCell.nib, forCellReuseIdentifier: ProfileUserCell.ReuseIdentifier)

    tabView.delegate = self

    title = "@szk-atmosphere"
}

You have to setup NavigationView and so on in viewDidSetupForMartyJunior like this.

override func viewDidSetupForMartyJunior() {
    super.viewDidSetupForMartyJunior()
    navigationView?.titleLabel.alpha = 0
    navigationView?.rightButton = UIButton(type: .InfoDark)
    navigationView?.rightButton?.tintColor = .white
}

Specific dataSource methods

// Return number of tabs
func mjViewControllerNumberOfTabs(viewController: MJViewController) -> Int

// Return UIView you want to display as top content
func mjViewControllerContentViewForTop(viewController: MJViewController) -> UIView

// Return TabView if you want to display as custom view
optional func mjViewControllerTabViewForTop(viewController: MJViewController) -> UIView

Other dataSource methods

Protocol based on UITableViewDataSource. It has targetIndex parameter to assign applicable tableView.

  • Example
optional func mjViewController(viewController: MJViewController, targetIndex: Int, numberOfSectionsInTableView tableView: UITableView) -> Int

Specific delegate methods

// Celled when selected tab index was changed
optional func mjViewController(viewController: MJViewController, didChangeSelectedIndex selectedIndex: Int)

Other delegate methods

Protocol based on UITableViewDelegate. It has targetIndex or selectedIndex parameter to assign applicable tableView.

  • Example
optional func mjViewController(viewController: MJViewController, targetIndex: Int, tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath)
optional func mjViewController(viewController: MJViewController, selectedIndex: Int, scrollViewDidScroll scrollView: UIScrollView)

Requirements

  • Xcode 8 or greater
  • iOS 8.0 or greater
  • MisterFusion (Swift DSL for AutoLayout)
  • UIKit

Other

A sample of this project uses

Author

Taiki Suzuki, [email protected]

License

MartyJunior is available under the MIT license. See the LICENSE file for more info.