Changing an image in a blueprint while in runtime.

Not sure I follow - what reference are you talking about? Sword button? You do not need to set a reference to the button, it’s done automatically as soon as you flag as isVariable.

I managed to set the default value of the reference

This part is the most worrying, there should never be any need to do this.

You said it works when you use another event - like button onClick. Think what other things can be going on behind the scenes. When / how / where are you calling that event.