我有一个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]];
}
答案 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:
或类似的吗?