之前我创建的是没有原型的自定义单元格,只是自定义类,使用我的UITableView注册该类以重用标识符并使用它。
在这种情况下,我使用了:- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
并且效果很好(除了UITableViewHeaderFooterView,他们从来不知道他们的帧,即使调用了这个方法,帧是0 0 0 0 - 但这不是我的问题)
现在我使用Interface Builder创建了一些自定义UITableViewCells。创建了他们的自定义类,从Interface Builder连接到我的自定义类,我注意到- (id)initWithCoder:(NSCoder *)aDecoder
被调用,这就是我需要进行修改的地方。
但是,我没能。这是唯一被调用的init方法,但如果我尝试在那里更改我的标签字体,它就不会被更改。我也试过圆形矩形按钮,但这也没有用(我的按钮也有框0 0 0 0 - 尚未存在)。
我的问题是,我应该在哪里修改使用Prototype Cells创建的元素的字体,背景颜色等内容?
答案 0 :(得分:4)
(id)initWithCoder:(NSCoder *)aDecoder
是正确的初始化程序。
试试这个:
@implementation TESTCell
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
self.textLabel.font = [UIFont boldSystemFontOfSize:25.0f];
}
return self;
}
@end
其他自定义(自己的子视图)转到:
- (void) awakeFromNib
{
[self.myButton setTitle:@"Hurray" forState:UIControlStateNormal];
}
工作正常。当然,您必须将StoryBoard或Interface Builder文件中的单元格标识符设置为您在UITableViewController中使用的相同标识符。
我在UITableViewController中使用了这段代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"TESTCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = @"TEST";
return cell;
}