This is because views from IB end with loading after initWithCoder . The following will help you understand the process. This is explained for UIViewControllers , but the concept is the same (from the ViewController Programming Guide ):
When you create a view controller in a storyboard, the attributes you configure in Interface Builder are serialized to the archive. Later, when an instance of the view controller is created, this archive is loaded into memory and processed. The result is a set of objects whose attributes correspond to those that you set in Interface Builder. The archive is loaded with a view manager call to the initWithCoder: method.
source share