Ios UITableViewCell子类在重新显示时重新加载子视图
我有一个Ios UITableViewCell子类在重新显示时重新加载子视图,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我有一个UITableView填充了属于RightArrowTableViewCell类的单元格,该类是UITableViewCell的子类。子类单元格包含箭头图标的类似附件的视图(ArrowDecororView)。选择主类别时,向下旋转箭头图标,以显示同一表视图中的子类别列表 然而,当tableview被滚动并且主类别单元格被“移出视图”时,事情就不那么顺利了。一旦主类别单元格移回视线,箭头图标将恢复其初始水平位置 为了解决这个问题,我在RightArrowTableViewCell类中添加
UITableView
填充了属于RightArrowTableViewCell
类的单元格,该类是UITableViewCell
的子类。子类单元格包含箭头图标的类似附件的视图(ArrowDecororView
)。选择主类别时,向下旋转箭头图标,以显示同一表视图中的子类别列表
然而,当tableview被滚动并且主类别单元格被“移出视图”时,事情就不那么顺利了。一旦主类别单元格移回视线,箭头图标将恢复其初始水平位置
为了解决这个问题,我在RightArrowTableViewCell
类中添加了一个标志,以检查单元格是否展开。然后在tableView:willDisplayCell:forrowatinexpath:
方法中,我执行以下操作:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
RightArrowTableViewCell *arrowCell = (RightArrowTableViewCell *)cell;
if (arrowCell.iconExpanded) {
[arrowCell updateIconStatus];
}
}
updateConstatus
如下所示:
- (void)updateIconStatus{
self.arrowDecoratorView.transform = CGAffineTransformMakeRotation(M_PI * 2.5);
[self layoutIfNeeded];
}
上述解决方案似乎有效,但时间不长。连续3-4次滚动隐藏/显示主类别单元格后,箭头图标将恢复其原始水平位置
有没有办法解决这个问题
谢谢。您可以尝试还原
表视图中箭头装饰视图的变换
:didEndDisplayingCell:forRowAtIndexPath:
,即在另一个方向进行旋转-M_PI*2.5
。但是,我想,在某个时候,这仍然可能会失去同步。您应该在CellForRowatineXpath中执行此操作,并且该标志不能是子类UITableViewCell的属性,因为这些单元格正在被重用,因此该属性应该属于您尝试填充表的数据结构。例如:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: NSIndexPath *)indexPath
{
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"customCell" forIndexPath:indexPath];
CustomDataClass *data = [_arData objectAtIndex:indexPath.row];
if(data.expand){
[cell ShowArrowInThisPos];
}
else{
[cell ShowArrowInThatPos];
}
... some code
return cell;
}
谢谢,但每次都在发生转变。更新并不总是显示。能否尝试更新dequeueReusableCellWithIdentifier:forIndexPath:中的图标状态?这是个好主意。我在UITableViewCell子类中重写了prepareForReuse,如下:-(void)prepareForReuse{if(self.iconExpanded){[self-UpdateConstatus];}}但问题仍然存在。有关prepareForReuse方法的文档说明,在重写时,应始终调用超类实现,但我怀疑这是否能解决你的问题。你能在某个地方发布一个工作示例,让我们看到你描述的行为吗?对任何人来说,提出建议都会更容易。你对房产的看法可能是对的。我会尝试一下,让你知道。你完全正确!我不敢相信我试图在UITableViewCell中保存一个要重用的属性。。。