我有一个UITableView,当一个单元格具有与其他单元格相同的内容时,此内容仅出现在绘制的las单元格中。我的自定义单元格添加了一个UIView属性来添加来自其他类的动态子视图。
- (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个UILabels:
组成我无法在单元格实例化中创建此标签并添加为子视图,因为单元格内容都是动态的。
感谢您的时间和帮助。
更新
我无法在单元格实例化中创建此标签并添加为子视图,因为单元格内容都是动态的。
我将详细解释它:
添加到collectionView属性的内容和UI控件可以区分每次执行。在一个执行中,collectionView可以有一个UIImageView和一个UILabel,下一次执行它有2个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来显示字符串工作正常。
答案 0 :(得分:0)
您不应该在块外添加子视图 -
if (!cell) {
cell = [[[CollectionCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:MyIdentifier]
autorelease];
}
您的子视图只应添加到此块中(第一次创建 可重复使用的 单元格)。
当你向上和向下滚动你的表时,在这个'if'块之外发生的所有事情都发生了多次,这就是你编辑添加的子视图的地方(仅在整个'if block,在它之外)。
请参阅我的回答here