在UITableViewCell子类中设置变量

时间:2012-11-21 16:38:44

标签: iphone objective-c uitableview subclass

我有一个UITableViewCell子类我需要有两个UIColor变量。我已经在标题中声明了它们但是在实现中我将设置它们的值以便稍后访问?

我需要一个与viewDidLoad类似的方法,这样我就可以在单元格加载时设置它们。我已经尝试在initWithStyle中设置它们,但它并不好,因为我不使用它来创建我的单元格。

在我的视图控制器中,我将它们加载到下面:

CustomCell *cell = [tv dequeueReusableCellWithIdentifier:cellIdentifier];

那我在哪里设置这些变量? (我想尝试将它们保留在子类中。)

修改

这是我的cellForRowAtIndexPath方法:

- (CustomCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"Cell";

    CustomCell *cell = [tv dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];

    return cell;
}

2 个答案:

答案 0 :(得分:1)

如果您正在使用故事板和原型,那么您的单元格将在首次创建时调用awakeFromNib。你可以把你的代码放在这里。

未调用

initWithStyle:,因为您的单元格是从笔尖加载的。它将使用initWithCoder:进行初始化。您也可以将代码放在那里,或者从那里调用的共享安装方法和initWithStyle(如果您改变将来使用单元格的方式)。

答案 1 :(得分:0)

initWithStyle是UITableViewCell类的指定初始化程序,因此您必须使用该方法来初始化UITableViewCell。只有在您启动了您的单元格并且有可用于出列的单元格时,才能使用Dequeing。

如果单元格为零,您可以看到您分配的代码和init。