私のカスタムテーブルビューセルサブクラスでは、テキストラベルの1つの場所は、ivar(NSString)のコンテンツによって異なります。(つまり、NSStringが空の文字列の場合、テキストラベルのフレームの位置は異なります)。
次のように更新された場合の位置:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
customOverlayCell *myCell = [self.tableView dequeueReusableCellWithIdentifier:@"CustomOverlayCell"];
if ([buildingFName isEqual:@""])
{
CGRect titleLabelFrame = myCell.titleLabel.frame;
titleLabelFrame.origin.y = 45;
[myCell.titleLabel setFrame:titleLabelFrame];
}
return myCell;
}
関連性のないコードの部分を削除しました。
その結果、画面に表示される最初のセルのレイアウトは適切に更新されますが、下にスクロールした後に表示されるビューのレイアウトは更新されません。
dequeueReusableCellWithIdentifierを適切に使用していませんか?それとも他に何か問題がありますか?
編集:
EJVからの解決策:
CGRect titleLabelFrame = myCell.titleLabel.frame;
if ([buildingFName isEqual:@""])
{
titleLabelFrame.origin.y = 45;
} else {
titleLabelFrame.origin.y = 37;
}
[myCell.titleLabel setFrame:titleLabelFrame];