为什么不是initWithCoder正确初始化项目?

我有一个UITableViewCell的子类。 我的子类包含几个UILabel 。 我希望我的子类将这些标签初始化为适用于我的每个表视图单元格的一些默认设置。

我读过,我应该使用initWithCoder为此。 我的initWithCoder函数被调用,并且我可以遍历函数中的每一行,并且看起来是通过运动。 当我运行我的应用程序时,我没有看到任何正在应用的属性。 最明显的是,字体没有被改变。 我只是不认为我正在修改的属性,我的UILabel实际上正在保存,或显示。

我将这个子类与Storyboard结合使用。 我知道我的更改不会反映在Storyboard ,但是它们在应用程序运行时也不会被反映 – 尽pipe我的代码正在执行。

编辑:我想提到,在尝试覆盖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 

当你收到消息时,你的IBOutlets都没有设置 – 你需要使用“awakeFromNib”或“viewDidLoad” – 类似的东西 – 来访问你的网点。 也就是说,你可以在initWithCoder中设置其他非出口的东西。