Decidí continuar mi proyecto restante con Swift. Cuando agrego la clase personalizada (subclase de UIViewcontroller
) a mi controlador de vista del guión gráfico y cargo el proyecto, la aplicación se bloquea repentinamente con el siguiente error:
error fatal: uso del inicializador no implementado 'init (codificador :)' para la clase
Este es un código:
import UIKit
class TestViewController: UIViewController {
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
// Custom initialization
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// #pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
}
Por favor sugiera algo
fuente
init(style: UITableViewStyle) { super.init(style: style) // Custom initialization }
¿Por qué podemos tener dos funciones de inicio? ¿Y alguna idea de por qué Apple no incluye el segundo init por defecto?fatalError( "init(coder:) has not been implemented")
detuvo mi aplicación.Otra opción además de @ 3r1d es eliminar el siguiente método init de su clase:
Incluyendo ese método init, evita que la subclase herede la
init(coder aDecoder: NSCoder!)
de su superclase. Al no incluirlo, su clase heredará ambos.Nota: Ver WWDC 2014 Sesión 403 "Intermedio Swift" en aproximadamente la marca 33:50 para más detalles.
fuente
init
métodos designados . Su clase hijo los heredará de la superclase. Todavía puede llamar,self.init()
lo que ejecutará la super versión.Para las personas que tienen el mismo problema con swift
UICollectionViewCells
, agregue el código que @ 3r1d sugirió a suUICollectionViewCell
clase personalizada y no a View Controller:fuente
Para aquellos que necesitan el código en Swift:
[Editar] Esto fue para una versión anterior de Swift. Posiblemente ya no funcione.
fuente
Tuve este problema en una celda programática de collectionView y, a pesar de que el operador está preguntando sobre un vc, aún me encontré con esta pregunta cuando buscaba una respuesta. Para mí, el problema era que tenía
implementado por lo que la respuesta superior no funcionó. Lo que no tenía en la celda era el inicializador:
Una vez que lo agregué, el error desapareció
fuente
En lugar de agregar algunos métodos para hacer que el mecanismo interno funcione bien, iría definiendo mis atributos como @lazy e inicializándolos directamente en el alcance de la clase.
fuente
?
.