objective c - ¿Por qué initWithCoder no inicializa correctamente los elementos?
objective-c ios (1)
Ninguno de sus IBOutlets está configurado cuando recibe el mensaje; debe usar "awakeFromNib" o "viewDidLoad" (algo así) para acceder a sus puntos de venta. Dicho esto, puedes configurar otras cosas sin salida en el initWithCoder.
Tengo una subclase de UITableViewCell
. Mi subclase contiene varias UILabel
s. Quiero que mi subclase inicialice estas etiquetas a algunas configuraciones predeterminadas que se aplican a cada celda de vista de tabla mía.
Leí que debería usar initWithCoder
para esto. initWithCoder
está initWithCoder
mi función initWithCoder
, y puedo recorrer cada línea de mi función y parece que sigue los movimientos. Sin embargo, cuando ejecuto mi aplicación no veo ninguna de las propiedades que se aplican. Más notablemente, la fuente no se está cambiando. Simplemente no creo que ninguna de las propiedades que estoy modificando en mi UILabel
se esté UILabel
o visualizando.
Estoy usando esta subclase junto con un Storyboard
. Sé que mis cambios no se reflejarán en el Storyboard
, pero tampoco se reflejarán cuando se ejecute la aplicación, a pesar de que mi código se está ejecutando.
Edición: quería mencionar que antes de intentar anular initWithCoder
, tenía un método de instancia en estas subclases en el que ejecutaba esta lógica. Simplemente llamaría a ese método de instancia dentro de cellForRowAtIndexPath
. Este método estaba funcionando, pero pensé que sería útil que esta lógica en esta subclase ocurriera automáticamente.
¿Algunas ideas? Mi código está abajo:
#import "ThreadListCell.h"
@implementation ThreadListCell
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
// adjust the font settings of the title
self.title.font = [UIFont fontWithName:@"SourceSansPro-Black" size:16];
self.title.textColor = [UIColor colorWithWhite:0.267f alpha:1.0f];
// adjust the font settings of the subtitle
self.text.font = [UIFont fontWithName:@"SourceSansPro-Light" size:14];
self.text.textColor = [UIColor colorWithWhite:0.267f alpha:0.9f];
self.text.textColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:1];
// adjust the font settings of the location
self.location.font = [UIFont fontWithName:@"SourceSansPro-Light" size:8];
self.location.textColor = [UIColor colorWithWhite:0.267f alpha:0.9f];
// adjust the UILabel settings of the title
self.title.numberOfLines = 0;
self.title.lineBreakMode = UILineBreakModeTailTruncation;
// adjust the UILabel settings of the subtitle
self.text.numberOfLines = 0;
self.text.lineBreakMode = UILineBreakModeTailTruncation;
// adjust the UILabel settings of the location
self.location.numberOfLines = 0;
self.location.lineBreakMode = UILineBreakModeTailTruncation;
self.location.textAlignment = UITextAlignmentRight;
}
return self;
}
@end
Y el encabezado:
#import <UIKit/UIKit.h>
@interface ThreadListCell : UITableViewCell
@property (nonatomic, weak) IBOutlet UILabel *text;
@property (nonatomic, weak) IBOutlet UILabel *title;
@property (nonatomic, weak) IBOutlet UILabel *location;
@end