Here is an annoying Gotcha!

In Swift, I was changing the button text like this:

    button?.titleLabel?.text = "something"

Big no-no, this just changes the text temporarily and won't persist when the button changes state to highlighted or selected.

Use this instead:

    button?.setTitle("something", forState: UIControlState.Normal)

Source:
http://stackoverflow.com/questions/5579338/text-change-on-uibutton-doesnt-stick