Почему initWithCoder неправильно инициализирует элементы?
У меня есть подклассUITableViewCell
, Мой подкласс содержит несколькоUILabel
s. Я хочу, чтобы мой подкласс инициализировал эти метки некоторыми настройками по умолчанию, которые применяются ко всем моим ячейкам табличного представления.
Я прочитал, что я должен использоватьinitWithCoder
за это. мойinitWithCoder
функция вызывается, и я могу пройти по каждой строке в моей функции, и она, кажется, проходит через движения. Когда я запускаю свое приложение, я не вижу ни одного из применяемых свойств. Наиболее заметно, шрифт не меняется. Я просто не думаю о каких-либо свойствах, которые я изменяю в моемUILabel
s на самом деле сохраняются или отображаются.
Я использую этот подкласс в сочетании сStoryboard
, Я знаю, что мои изменения не будут отражены наStoryboard
, но они также не отражаются при запуске приложения, несмотря на выполнение моего кода.
Изменить: я хотел бы упомянуть, что до попытки переопределитьinitWithCoder
У меня был метод экземпляра в этих подклассах, в котором я запускал эту логику. Я бы просто вызвал этот метод экземпляра внутриcellForRowAtIndexPath
, Этот метод работал, но я подумал, что было бы удобно, чтобы эта логика в этом подклассе происходила автоматически.
Есть идеи? Мой код ниже:
#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
И заголовок:
#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