gpt4 book ai didi

ios - 滚动时 TableView 行会变得困惑

转载 作者:行者123 更新时间:2023-11-29 02:38:03 25 4
gpt4 key购买 nike

我在 UIViewController 中使用 tableview,并且我有 UITableViewCell 的子类。我在 viewDidLoad 中注册单元格;- 在 cellForRowAtIndexPath 中,我使用 dequeueReusableCellWithIdentifier 获取单元格,并将所有标签重置为正确的值;但是,当表格滚动时,顶部的行和底部的行会混淆并且标签会互换。我不知道为什么当我将单元格重置为每行的正确值时会发生这种情况。您知道为什么会发生混淆吗。

[self.myFoldersTableView registerClass:[QConnectFoldersTVCell class] forCellReuseIdentifier:QMY_FOLDERS_CELL_ID];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:NSIndexPath *)indexPath
{
QConnectFoldersTVCell *cell = (QConnectFoldersTVCell *)[tableView dequeueReusableCellWithIdentifier:cellId forIndexPath:indexPath];

NSMutableDictionary *cellDataDict = [self findCellDataAtIndexPath:indexPath];

// Configure the cell...
cell.mainLabel.text = cellDataDict[FOLDER_CELL_DICT_KEY_MAIN_TEXT];
cell.detailLabel.text = cellDataDict[FOLDER_CELL_DICT_KEY_DETAIL_TEXT];
cell.folderCellType = [cellDataDict[FOLDER_CELL_DICT_KEY_TYPE] intValue];


return cell;
}
  • 我想补充一点,我已经打印出为该行设置的标签值,并且每一行的数据都是正确的。在上述函数中,单元格被重置为正确的数据。所以我不知道为什么屏幕上会显示其他内容。

最佳答案

  • 我找到了混淆的原因。在我的 tableViewCell 子类中,我使用 layoutSubviews 对标签进行初始化,因为单元格的实际大小在 init 中不可用,但在 layoutSubviews 中可用。删除 layoutSubviews 覆盖似乎已经停止了数据/值的行混合。

    - (void)layoutSubviews
    {
    [super layoutSubviews];
    CGSize size = self.contentView.frame.size;
    CGFloat mainHeight = ((size.height * 6)/10) - 6.0;
    CGFloat detailHeight = ((size.height*4)/10) - 6.0;
    self.mainLabel = [[UILabel alloc] initWithFrame:CGRectMake(8.0, 4.0, size.width - 16.0, mainHeight)];
    self.detailLabel = [[UILabel alloc] initWithFrame:CGRectMake(8.0, 4.0+(self.mainLabel.frame.size.height)+4.0, size.width - 16.0, detailHeight)];
    }

关于ios - 滚动时 TableView 行会变得困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26130192/

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