配置单元格drawRect:自定义drawRect仅在tableView中拖动后出现?

时间:2015-02-02 15:35:02

标签: ios uisplitviewcontroller drawrect custom-cell

我有一个splitViewController,destinationController是一个tableViewController,如果是自定义类" MyCell"我想控制单元格的设计。只有在我拖动tableView时才会调用drawRect:红色背景仅在单元格从屏幕上消失并重新出现后才会出现。你知道为什么吗?

//in viewController.m
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    MyCell*cell = (MyCell*)[tableView dequeueReusableCellWithIdentifier:@"CellDetail"] ;
    [self configureCell:cell atIndexPath:indexPath];
    return cell;
}
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    RDV *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
    cell.textLabel.text = [[object valueForKey:@"name"] description];
    [cell setNeedsDisplay];
    [cell layoutIfNeeded];
}



//in MyCell.m
-(void)drawRect:(CGRect)rect{
    [self setBackgroundColor: [UIColor redColor]];
}

3 个答案:

答案 0 :(得分:0)

我不确定为什么在滚动之前不会显示颜色变化,但是你不应该为此目的使用drawRect。将背景颜色代码放在单元格的init方法或awakeFromNib中。

答案 1 :(得分:0)

答案有点棘手,我不得不将MyRealCell* cell = (MyRealCell*)[tableView dequeueReusableCellWithIdentifier:@"MyCell" forIndexPath:indexPath];forIndexPath一起使用,这样,contentView框架包含一些东西,否则就是0,0,0,0。

答案 2 :(得分:0)

我假设您没有使用表格视图注册单元格。有 -

MyCell*cell = (MyCell*)[tableView dequeueReusableCellWithIdentifier:@"CellDetail"] ;

返回nil。因为您可以向nil发送任何邮件,并且nil始终0x0将被返回,要求框架返回CGRectZeo

为什么拖动会让细胞出现不明显。你实施tableView:cellWillAppear:或类似的吗?