カスタム(サブクラス化された)UITableViewCellには、いくつかのUILabels、UIButton、およびNSBlockがプロパティとして含まれています。このサブクラスはExploreCell
と呼ばれます。 2つのプロパティはUILabelsで、それぞれwaitLabel
とlastUpdateLabel
という名前です。UITableViewCellサブビューのフレームを更新しても効果がありません
lastUpdateLabel
の内容がnilであるか空白、つまり@""
である場合、waitLabel
を垂直方向(Y軸上)に10ピクセル移動する必要があります。私はこれを、-tableView:cellForRowAtIndexPath:
メソッドに入れた次のコードに示すように、NSDictionary
のオブジェクトをチェックしています。
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
のフレームを変更したことになります。
なぜこのようなことが起こっているのか、どのように修正できるのか教えてください。
あなたはそのコードをどこに入れましたか? – Uby
-cellForRow .... –
自動レイアウトを使用していますか? – rdelmar