 <p>This works for me:</p> <pre><code>class IconTextField: UITextField { @IBOutlet weak var view: UIView! @IBOutlet weak var test: UIButton! required init(coder: NSCoder) { super.init(coder: coder) NSBundle.mainBundle().loadNibNamed("IconTextField", owner: self, options: nil) self.addSubview(view) assert(test != nil, "the button is conected just like it's supposed to be") } } </code></pre> <p>Once <code>loadNibNamed:owner:options:</code> is called the <code>view</code> and <code>test</code> button are connected to the outlets as expected. Adding the nib's view self's subview hierarchy makes the nib's contents visible.</p>