自定义TableView单元格未配置

时间:2013-08-30 03:14:41

标签: ios objective-c uitableview

我有一个类MTTableViewCell:UITableViewCell 该类中的init方法如下: 请注意,我将backgroundcolor设置为紫色。

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if(self)
    {
    [self setBackgroundColor:[UIColor purpleColor]];
    }
    return self;

   // return [self initMVTableViewCellWithStyle:style reuseIdentifier:reuseIdentifier cellColor:nil];
}

我从tableview的委托中调用以下方法

 -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {

        static NSString* identifier = @"one";
        [self.tableView registerClass:[MVTTableViewCell class] forCellReuseIdentifier:identifier];

        MVTTableViewCell *cell = [[MVTTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];

        cell.textLabel.text = [self->datasource objectAtIndex:[indexPath row]];
        return cell;



    }

但是我没有看到表格视图单元格的颜色有任何变化。 出了什么问题?

3 个答案:

答案 0 :(得分:1)

我会尝试将您的调用移动到您的viewDidLoad方法的注册类,而不是分配/启动单元格,尝试从表中出列一个。通过注册单元的类进行重用,您可以根据表格进行回收。注意:请确保您注册的单元格ID与您在cellForRowAtIndexPath中访问的单元格ID相同:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.tableView registerClass:[MVTTableViewCell class] forCellReuseIdentifier:@"one"];
}

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"one";

    MVTTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath];

    cell.textLabel.text = [self->datasource objectAtIndex:[indexPath row]];
    return cell;
}

不幸的是我不在我可以测试它的机器上我似乎无法记住在这种情况下的单元调用结构(它已经晚了:))但我会检查是否可能有不同的init正在调用,否则,尝试在cellFor ...中设置背景颜色本身只是为了排除故障。尝试在单元格的contentView上设置它。

答案 1 :(得分:1)

当我想要更改单元格的背景颜色时,我通常会使用:

 - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if(self)
   {
     [self.contentView setBackgroundColor:[UIColor purpleColor]];
   }
    return self;


}

答案 2 :(得分:0)