配置单元格 drawRect:自定义 drawRect 仅在 tableView 中拖动后出现?
configure cell drawRect : custom drawRect only appears after a drag in tableView?
我有一个 splitViewController,destinationController 是一个 tableViewController,如果自定义 class "MyCell",我想控制单元格的设计。 drawRect 仅在我拖动 tableView 时被调用:红色背景仅在单元格从屏幕上消失并重新出现后出现。你知道为什么吗?
//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]];
}
我不确定为什么直到滚动才显示颜色变化,但无论如何您都不应该为此目的使用 drawRect。将背景颜色代码放在单元格的init方法中或awakeFromNib中。
答案有点棘手,我不得不使用 MyRealCell* cell = (MyRealCell*)[tableView dequeueReusableCellWithIdentifier:@"MyCell" forIndexPath:indexPath];
和 forIndexPath
,这样,contentView 框架包含一些东西,否则它是 0,0,0,0.
我假设您没有在 table 视图中注册单元格。为了
MyCell*cell = (MyCell*)[tableView dequeueReusableCellWithIdentifier:@"CellDetail"] ;
returnsnil
。因为您可以向 nil
发送任何消息,并且总是会返回 0x0
的 nil
,请求帧 returns 和 CGRectZeo
.
为什么拖动会使单元格出现并不明显。你实施 tableView:cellWillAppear:
或类似的吗?
我有一个 splitViewController,destinationController 是一个 tableViewController,如果自定义 class "MyCell",我想控制单元格的设计。 drawRect 仅在我拖动 tableView 时被调用:红色背景仅在单元格从屏幕上消失并重新出现后出现。你知道为什么吗?
//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]];
}
我不确定为什么直到滚动才显示颜色变化,但无论如何您都不应该为此目的使用 drawRect。将背景颜色代码放在单元格的init方法中或awakeFromNib中。
答案有点棘手,我不得不使用 MyRealCell* cell = (MyRealCell*)[tableView dequeueReusableCellWithIdentifier:@"MyCell" forIndexPath:indexPath];
和 forIndexPath
,这样,contentView 框架包含一些东西,否则它是 0,0,0,0.
我假设您没有在 table 视图中注册单元格。为了
MyCell*cell = (MyCell*)[tableView dequeueReusableCellWithIdentifier:@"CellDetail"] ;
returnsnil
。因为您可以向 nil
发送任何消息,并且总是会返回 0x0
的 nil
,请求帧 returns 和 CGRectZeo
.
为什么拖动会使单元格出现并不明显。你实施 tableView:cellWillAppear:
或类似的吗?