framework - uikit ios
¿Cómo reemplazar tanto initWithFrame: como initWithCoder: en la subclase de UIView? (2)
Estoy tratando de subclase UIView. Ya tengo un inicializador designado y quiero tener la posibilidad de que mi vista personalizada se inicialice desde el código o desde el archivo Nib. Entonces, Apple nos dijo que initWithCoder:
inicializador designado, pero no lo están haciendo ellos mismos - initWithCoder:
no llama a initWithFrame:
¿Qué debo hacer para que se llame a mi inicializador designado en ambas situaciones? ¿No hay manera de hacer eso?
Como dijiste:
initWithFrame: - Se recomienda que implementes este método. También puede implementar métodos de inicialización personalizados además de, o en lugar de, este método.
initWithCoder: - Implemente este método si carga su vista desde un archivo nib de Interface Builder y su vista requiere una inicialización personalizada.
Lo que haría sería solo un método que ambos llamarían, que tendría un comportamiento común que desea implementar en su UIView
.
Empaque su inicialización especial en un método. Puede ser privado (declarado en .m). Luego anule ambos inicializadores y llame a su método init desde dentro de ellos.
- (void)myInitialization
{
//do your stuff
}
- (id)initWithFrame:(CGRect)aRect
{
self = [super initWithFrame:aRect];
if (self)
{
[self myInitialization];
}
return self;
}
- (id)initWithCoder:(NSCoder*)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[self myInitialization];
}
return self;
}