que framework ios objective-c uiview

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; }