According to the NSObject UIKit Additions Reference, outlet variables should be set by the time awakeFromNib is called (emphasis all mine):
awakeFromNib
View controllers wait until their view is accessed to actually create their view. Since the button is in the view controller's view, it won't be instantiated yet.