SAHistoryNavigationViewController realizes iOS task manager like UI in UINavigationContoller. Support 3D Touch!

SAHistoryNavigationViewController realizes iOS task manager like UI in UINavigationContoller.
Features
- iOS task manager like UI
- Launch Navigation History with Long tap action of Back Bar Button
- Support Swift2.0
- Support 3D Touch (If device is not supported 3D Touch, automatically replacing to long tap gesture.)
- Support Swift2.3
- Sipport Swift3
Installation
CocoaPods
SAHistoryNavigationViewController is available through CocoaPods. If you have cocoapods 0.38.0 or greater, you can install it, simply add the following line to your Podfile:
pod "SAHistoryNavigationViewController"
Manually
Add the SAHistoryNavigationViewController directory to your project.
Usage
If you install from cocoapods, You have to write import SAHistoryNavigationViewController
.
Storyboard or Xib

public protocol SAHistoryCompatible {
associatedtype CompatibleType
var sah: CompatibleType { get }
}
public extension SAHistoryCompatible {
public var sah: SAHistoryExtension<Self> {
return SAHistoryExtension(self)
}
}
public final class SAHistoryExtension<Base> {
public let base: Base
public init(_ base: Base) {
self.base = base
}
}
extension UIViewController: SAHistoryCompatible {}
extension SAHistoryExtension where Base: UIViewController {
public var navigationController: SAHistoryNavigationViewController? {
return base.navigationController as? SAHistoryNavigationViewController
}
}
And you have to initialize like this.
let ViewController = UIViewController()
let navigationController = SAHistoryNavigationViewController()
navigationController.setViewControllers([ViewController], animated: true)
presentViewController(navigationController, animated: true, completion: nil)
If you want to launch Navigation History without long tap action, use this code.
//In any UIViewController
self.sah.navigationController?.showHistory()
Customize
If you want to customize background of Navigation History, you can use those methods.
//In any UIViewController
self.sah.navigationController?.contentView
self.sah.navigationController?.historyBackgroundColor
This is delegate methods.
@objc public protocol SAHistoryNavigationViewControllerDelegate: NSObjectProtocol {
optional func historyControllerDidShowHistory(controller: SAHistoryNavigationViewController, viewController: UIViewController)
}
Requirements
- Xcode 8.0 or greater
- iOS8.0 or greater
- MisterFusion