La solución de Sam ya es excelente, a pesar de que no tiene en cuenta diferentes paquetes (NSBundle: forClass viene al rescate) y requiere una carga manual, también conocido como código de mecanografía.
Si desea soporte completo para sus tomas Xib, diferentes paquetes (¡use en marcos!) Y obtenga una buena vista previa en Storyboard intente esto:
// NibLoadingView.swift
import UIKit
/* Usage:
- Subclass your UIView from NibLoadView to automatically load an Xib with the same name as your class
- Set the class name to File's Owner in the Xib file
*/
@IBDesignable
class NibLoadingView: UIView {
@IBOutlet weak var view: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
nibSetup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
nibSetup()
}
private func nibSetup() {
backgroundColor = .clearColor()
view = loadViewFromNib()
view.frame = bounds
view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
view.translatesAutoresizingMaskIntoConstraints = true
addSubview(view)
}
private func loadViewFromNib() -> UIView {
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: String(self.dynamicType), bundle: bundle)
let nibView = nib.instantiateWithOwner(self, options: nil).first as! UIView
return nibView
}
}
Use su xib como de costumbre, es decir, conecte los tomacorrientes al propietario del archivo y establezca la clase del propietario del archivo en su propia clase.
Uso: simplemente subclasifique su propia clase View desde NibLoadingView y configure el nombre de la clase como Propietario del archivo en el archivo Xib
No se requiere código adicional más.
Créditos donde vence el crédito: Bifurcó esto con cambios menores de DenHeadless en GH. Mi esencia: https://gist.github.com/winkelsdorf/16c481f274134718946328b6e2c9a4d8