I've got a subclass of UITableViewCell
. My subclass contains several UILabel
s. I want my subclass to initialize these labels to some default settings that applies to every table view cell of mine.
I read that I should be using initWithCoder
for this. My initWithCoder
function is being called, and I can step through each line in my function and it appears to go through the motions. When I run my application I do not see any of the properties being applied, though. Most noticeably, the font is not being changed. I just don't think any of the properties that I'm modifying on my UILabel
s are actually being saved, or displayed.
I'm using this subclass in conjunction with a Storyboard
. I know my changes will not be reflected on the Storyboard
, but they're also not being reflected when the application runs - despite my code being executed.
Edit: I wanted to mention that prior to trying to override initWithCoder
, I had an instance method in these subclasses that I'd run this logic in. I would just call that instance method inside of cellForRowAtIndexPath
. This method was working, but I thought it'd be handy to have this logic in this subclass occur automatically.
Any ideas? My code is below:
#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
And the header:
#import @interface ThreadListCell : UITableViewCell @property (nonatomic, weak) IBOutlet UILabel *text; @property (nonatomic, weak) IBOutlet UILabel *title; @property (nonatomic, weak) IBOutlet UILabel *location; @end