 
         tabView?.update(toIndex)
         contentScrollView?.update(toIndex)
-        currentIndex = toIndex
-
-        if !isLayoutingSubviews {
+        if !isJumping {
+            // delay setting currentIndex until end scroll when jumping
+            currentIndex = toIndex
+        }
+
+        if !isJumping && !isLayoutingSubviews {
             delegate?.swipeMenuView(self, didChangeIndexFrom: fromIndex, to: toIndex)
         }
     }

    public func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {

        if isJumping || isLayoutingSubviews {
            isJumping = false
            isLayoutingSubviews = false
            return

    public func jump(to index: Int, animated: Bool) {

        if let tabView = tabView, let contentScrollView = contentScrollView {
            delegate?.swipeMenuView(self, willChangeIndexFrom: currentIndex, to: index)
            jumpingToIndex = index

            tabView.jump(to: index)
            contentScrollView.jump(to: index, animated: animated)
        }
    }

