Cargando una vista desde XIB y visualizando en Storyboard

Durante mucho time he estado trabajando con vistas personalizadas con files xib .

En este caso, necesitaba hacer lo siguiente:

  1. Cree un xib -file y swift -file, ambos con el mismo nombre.
  2. Seleccione la vista, configure su class personalizada para la class en swift file.
  3. Continúe trabajando y, cuando sea necesario, creo la vista así:

     public extension UIView { class func fromXib() -> UIView { return NSBundle.mainBundle().loadNibNamed(self.nameOfClass, owner: nil, options: nil).first as! UIView } 

Ok, está funcionando, no hay problema. Pero en un proyecto diferente comencé a trabajar más con Storyboard. Quería que se muestren vistas personalizadas allí a pesar de que fueron diseñadas en xib -file (lo hago, por ejemplo, cuando la vista aparece en varias pantallas).

Entonces, para resolver esta tarea, hice los siguientes pasos:

  1. Cree un xib -file y swift -file, ambos con el mismo nombre.
  2. En lugar de configurar la class personalizada, configuré el File's owner del file en la class swift file. (Por lo tanto, la class de mi vista no está configurada, UIView por defecto).
  3. Agrego el siguiente código a los methods del ciclo de vida de la vista:

     requinetworking init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setup() } override init(frame: CGRect) { super.init(frame: frame) setup() } func setup() { let v = NSBundle(forClass: self.dynamicType).loadNibNamed(self.nameOfClass, owner: self, options: nil).first as? UIView addSubview(v!) v?.frame = self.bounds } 
  4. @IBDesignable la vista como @IBDesignable .

Una vez más, todo está bien, agrego una vista a la pantalla del guión gráfico, establezco su class en mi class personalizada y ta-daa, se renderiza en Interface Builder y se carga en time de ejecución de mi aplicación.

El problema es : ¿Cómo puedo conectar todas las cosas? Si utilizo mi método fromXib , la aplicación se bloquea: la Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x7f9ea2d5b240> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key hoursLabel.

Sería muy conveniente si tuviera la forma de cargar vistas en ambos sentidos.

¡Gracias por adelantado!