Objective c UITableViewCell会丢失其他单元格中的重复内容
我有一个UITableView,当一个单元格与另一个单元格具有相同的内容时,该内容仅显示在las单元格中。我的自定义单元格添加UIView属性,以从其他类添加动态子视图Objective c UITableViewCell会丢失其他单元格中的重复内容,objective-c,ios,uitableview,Objective C,Ios,Uitableview,我有一个UITableView,当一个单元格与另一个单元格具有相同的内容时,该内容仅显示在las单元格中。我的自定义单元格添加UIView属性,以从其他类添加动态子视图 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *MyIdentifier = @"cell"; Co
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *MyIdentifier = @"cell";
CollectionCell *cell = (CollectionCell *)[tableView
dequeueReusableCellWithIdentifier:MyIdentifier];
if (!cell) {
cell = [[[CollectionCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:MyIdentifier]
autorelease];
}
[cell setCollectionView:/* Generated view in other class */];
return cell;
}
具体问题是:
例如,我的动态视图由2个UILabel组成:
- 如果标签1是标题,则每行的标题都是唯一的->没问题,渲染良好
- 如果标签2是一个类别,则从0到5的索引具有相同的类别->只有索引5处的行显示类别标签
我无法在单元格实例化和添加为子视图中创建此标签,因为单元格内容都是动态的 谢谢你的时间和帮助 更新:
我无法在单元格实例化和添加为子视图中创建此标签,因为单元格内容都是动态的 我将详细解释一下: 每次执行时,添加到collectionView属性的内容和UI控件可能会有所不同。在一次执行中,collectionView可以有一个UIImageView和一个UILabel,而在下一次执行中,它有两个UILabel(例如)。这就是为什么我不能创造这样的东西
if (!cell) {
cell = [[[CollectionCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:MyIdentifier]
autorelease];
UILabel *foo = [[UILabel alloc] initWithFrame:SomeFrame];
[foo setTag:101];
[cell.collectionView addSubview:foo];
}
UILabel *foo = [cell.collectionView subviewWithTag:101];
[foo setTitle:@"This content is dynamic"];
谢谢
更新2:
自定义UILabel子类似乎有问题。如果我使用原始UILabel显示字符串,效果很好。不应在块外添加子视图-
if (!cell) {
cell = [[[CollectionCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:MyIdentifier]
autorelease];
}
您的子视图只应添加到此块中(第一次创建可重用单元时)
当您上下滚动表格时,此“if”块之外(之后)发生的所有事情都会发生多次,因此您可以在此处编辑添加的子视图(仅在整个“if”块之外)
请参阅我的回答“我无法在单元格实例化中创建此标签并添加为子视图,因为单元格内容都是动态的。”请对此展开,并显示您正在设置为集合视图的内容。CellForRowatinex路径是设置动态内容的位置。是的,我知道,但这对我无效,因为添加的子视图在每次执行或不同的单元格中都有不同的UI控件和内容,并且它们是在运行时定义的:(很抱歉,它不起作用。显示相同的行为,我怀疑UITableView工作正常,问题在于对生成的视图的引用……新内容隐藏旧内容……我不知道。是否有理由不使用[self.tableView reloadRowsAtIndexPaths:withRowAnimation:]?然后定制它?我不理解使用reloadRowsAtIndexPathds的目的…它将绘制与cellAtIndexPath相同的图形,对吗?真正的问题是,应该在2个celd中显示的字符串(独立于[super/sub]视图)只显示在最后一个celd绘制中。相同的子视图和不同的字符串可以正常工作。