Warum initialisiert initWithCoder Elemente nicht richtig?
Ich habe eine Unterklasse vonUITableViewCell
. Meine Unterklasse enthält mehrereUILabel
s. Ich möchte, dass meine Unterklasse diese Beschriftungen mit einigen Standardeinstellungen initialisiert, die für jede meiner Tabellenzellen gelten.
Ich habe gelesen, dass ich verwenden sollteinitWithCoder
dafür. MeineinitWithCoder
Funktion wird aufgerufen, und ich kann jede Zeile in meiner Funktion durchlaufen, und es scheint, als ob sie die Bewegungen durchläuft. Wenn ich meine Anwendung ausführe, werden jedoch keine der Eigenschaften angewendet. Am auffälligsten ist, dass die Schriftart nicht geändert wird. Ich denke nur nicht an die Eigenschaften, die ich an meinem ändereUILabel
s werden tatsächlich gespeichert oder angezeigt.
Ich benutze diese Unterklasse in Verbindung mit aStoryboard
. Ich weiß, dass meine Änderungen nicht auf der Website angezeigt werdenStoryboard
Aber sie werden auch nicht wiedergegeben, wenn die Anwendung ausgeführt wird - obwohl mein Code ausgeführt wird.
Edit: Ich wollte das erwähnen, bevor ich versuche, es zu überschreibeninitWithCoder
Ich hatte eine Instanzmethode in diesen Unterklassen, in der ich diese Logik ausführen würde. Ich würde diese Instanzmethode nur innerhalb von aufrufencellForRowAtIndexPath
. Diese Methode hat funktioniert, aber ich dachte, es wäre praktisch, wenn diese Logik in dieser Unterklasse automatisch auftritt.
Irgendwelche Ideen? Mein Code ist unten:
#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
Und der Header:
#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