         }
         for (idx, item) in items.enumerated() {
             if idx == index {
-                item.setSelected(true, animated: animated)
-                delegate?.tabNavigationBar?(self, didSelectTitleItemAt: index)
+                delegate?.tabNavigationBar?(self, willSelectTitleItemAt: index)
+                item.setSelected(true, animated: animated) { [unowned self] in
+                    self.delegate?.tabNavigationBar?(self, didSelectTitleItemAt: index)
+                }
             } else {
                 item.setSelected(false, animated: animated)
             }

                let _tintColorAnimation = POPSpringAnimation(propertyNamed: kPOPViewTintColor)
                _tintColorAnimation?.toValue = _selectionTitleColors[selected]
                _tintColorAnimation?.removedOnCompletion = true
                self._button.pop_add(_tintColorAnimation, forKey: "TINTCOLOR")
            }
        } else {

}

public class TabNavigationTitleActionItem: TabNavigationTitleItem {
    public override func setSelected(_ selected: Bool, animated: Bool, completion: (() -> Void)? = nil) {
        super.setSelected(false, animated: false, completion: completion)
    }
    
    public override func titleFont(whenSelected selected: Bool) -> UIFont {
