プロパティとしていくつかの UILabels、UIButton、および NSBlock を含むカスタム (サブクラス化) UITableViewCell があります。このサブクラスは と呼ばれExploreCellます。2 つのプロパティは UILabels でwaitLabel、lastUpdateLabelそれぞれ と という名前が付けられています。
の内容lastUpdateLabelが nil または空白の場合、つまりを (Y 軸上で) 垂直方向に 10 ピクセル@""移動する必要があります。メソッドに入れている次のコードに示すように、waitLabelいくつかのオブジェクトをチェックすることでこれを行っています。NSDictionary-tableView:cellForRowAtIndexPath:
CGRect frame = cell.waitLabel.frame;
if ([[venue allKeys] containsObject:@"wait_times"] && ([[venue objectForKey:@"wait_times"] count] > 0)) {
frame.origin.y = 43;
}
else {
frame.origin.y = 53;
}
[cell.waitLabel setFrame:frame];
ただし、このコードは断続的に機能し、 を呼び出そう-setNeedsLayoutとしても機能しません。断続的にとは、数回スクロールした後、セルの原点を 10 ピクセル下に移動する基準に一致する 1 つまたは 2 つのセルwaitLabelのフレームが実際に変更されることを意味します。
なぜこれが発生するのか、どのように修正できるのか教えてください。