             let index: Int = itemViews.index(of: itemView),
             currentIndex != index else { return }
         tabViewDelegate?.tabView(self, willSelectTabAt: index)
-        moveTabItem(index: index)
+        moveTabItem(index: index, animated: true)
         update(index)
         tabViewDelegate?.tabView(self, didSelectTabAt: index)
     }
 
-    private func moveTabItem(index: Int) {
+    private func moveTabItem(index: Int, animated: Bool) {
 
         switch options.addition {
         case .underline:
-            animateUnderlineView(index: index, completion: nil)
+            animateUnderlineView(index: index, animated: animated, completion: nil)
         case .none:
             update(index)
         }


    /// Reloads all `TabView` item views with the dataSource and refreshes the display.
    public func reloadData(options: SwipeMenuViewOptions.TabView? = nil,
                       default defaultIndex: Int? = nil) {

        if let options = options {
            self.options = options

        underlineView.frame.size.width = adjustCellWidth
    }

    fileprivate func animateUnderlineView(index: Int, animated: Bool, completion: ((Bool) -> Swift.Void)? = nil) {

        update(index)

        if animated {
            UIView.animate(withDuration: 0.3, animations: {
                self.updateUnderlineViewPosition(index: index)
            }, completion: completion)
        } else {
            updateUnderlineViewPosition(index: index)
        }
    }

    func moveUnderlineView(index: Int, ratio: CGFloat, direction: Direction) {

        update(index)

