如何在UITableViewCell的contentView中添加多个项目

时间:2012-04-19 11:27:59

标签: objective-c uitableview

我有一个相当复杂的UITableViewCell,在生产代码中我可以用以下内容拉出一个选定的UILabel

[[[[[[cell subviews] objectAtIndex:1] subviews] objectAtIndex:0] subviews] objectAtIndex:4];

一切都没有问题 - 我遇到的问题是当我尝试创建一个简单的单元测试时,它会显示预期如何工作。

出于某种原因,我无法构建在单元格的contentView属性中有2个项目的场景

所以我可以很容易地得到[[cell subviews] objectAtIndex:0]但是从来没有1

在我的测试帮助程序中,我正在执行以下操作来模拟此操作(没有运气)

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
UIView *view1 = [[UIView alloc] init];
UILabel *label1 = [[UILabel alloc] init];
UIView *view2 = [[UIView alloc] init];
UILabel *label2 = [[UILabel alloc] init];

[view1 addSubview:label1];
[cell.contentView addSubview:view1];

[view2 addSubview:label1];
[view2 addSubview:label2];
[cell.contentView addSubview:view2];

NSLog(@"inside ...%@", [[cell subviews] objectAtIndex:1]);

1 个答案:

答案 0 :(得分:0)

您无法将label1添加到view1和view2,您必须创建两个不同的标签。一个视图只能有一个superview,所以当你说[view2 addSubview:label1];时,label1会从view1中删除。