 
         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


    /// The index of the front page in `SwipeMenuView` (read only).
    open private(set) var currentIndex: Int = 0
    private var jumpingToIndex: Int?

    public init(frame: CGRect, options: SwipeMenuViewOptions? = nil) {

