我有一个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