             return _rootViewControllersInfo.viewControllers[_rootViewControllersInfo.selectedIndex]
         }()
     }
+    fileprivate weak var _selectedViewController: UIViewController?
     
     private weak var _trailingConstraintOfLastViewController: NSLayoutConstraint?
     

// MARK: - UIScrollViewDelegate.

extension TabNavigationController: UIScrollViewDelegate {
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        guard _viewControllersStack.isEmpty else {
            return
        }
        _commitTransitionNavigationItemViews(at: Int(scrollView.contentOffset.x / scrollView.bounds.width))
    }
    
    func scrollViewDidScroll(_ scrollView: UIScrollView) {

    
    public func setViewControllers<T>(_ viewControllers: Array<T>, animated: Bool) where T: UIViewController, T: TabNavigationReadable {
        // FIXME:Imp the function.
    }
    
    public func setSelectedViewController(_ viewController: UIViewController, animated: Bool) {
        if let index = _rootViewControllersInfo.viewControllers.index(of: viewController) {
            setSelectedViewController(at: index, animated: animated)
        }
    }
    
    public func setSelectedViewController(at index: Array<UIViewController>.Index, animated: Bool) {
        _setSelectedViewController(at: index, updateNavigationItems: true, animated: animated)
    }
    
    public func addViewController<T>(_ viewController: T) where T: UIViewController, T: TabNavigationReadable {
