原型UITableViewCell初始化

时间:2014-01-31 16:34:16

标签: ios objective-c uitableview

之前我创建的是没有原型的自定义单元格,只是自定义类,使用我的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创建的元素的字体,背景颜色等内容?

1 个答案:

答案 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;
}