私はかなり複雑な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]);