gpt4 book ai didi

iphone - UITableViewCell 自定义子类 View 未更新

转载 作者:行者123 更新时间:2023-11-28 22:52:01 26 4
gpt4 key购买 nike

在我的自定义表格 View 单元格子类中,文本标签之一的位置取决于 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;
}

我删除了不相关的部分代码。

结果是第一个出现在屏幕上的单元格的布局被正确更新,但向下滚动后出现的 View 的布局没有更新。

我没有正确使用 dequeueReusableCellWithIdentifier 吗?还是有其他问题?

编辑:

EJV 的解决方案:

CGRect titleLabelFrame = myCell.titleLabel.frame; 

if ([buildingFName isEqual:@""])
{
titleLabelFrame.origin.y = 45;
} else {
titleLabelFrame.origin.y = 37;
}

[myCell.titleLabel setFrame:titleLabelFrame];

最佳答案

如果标题标签的框架是动态的,那么当您从 TableView 中取出一个单元格时,该框架可能处于两种状态中的任何一种(当 buildingFName 为空时和当它有字符时)。您需要确保在 buildingFName 不为空时设置框架。这样,标题标签的框架将始终正确设置。所以,你需要这样的代码:

CGRect titleLabelFrame = myCell.titleLabel.frame;

if ([buildingFName isEqual:@""])
{
titleLabelFrame.origin.y = 45;
} else {
// Change titleLabelFrame
}

[myCell.titleLabel setFrame:titleLabelFrame];

关于iphone - UITableViewCell 自定义子类 View 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11749627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com