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)