滚动后 iOS UITableViewCell 无法正确更新

标签 ios objective-c iphone uitableview

这就是我所拥有的:我有一个带有自定义 UITableViewCell 的 TableView,它正在从 MutableArray 加载数据。

在我的 cellForRow: 我调用代码用数组中的数据绘制 subview ,当我向下滚动和向上滚动时,该 subview 看起来非常错误,但每个标签似乎都是正确的...

我在谷歌上尝试了很多答案,但都没有解决它,我什至将 subview 放到数组中,但也不起作用,抱歉,我还不能发布图片:(

NSMutableArray *mintHistoryList = //Array of Epin objects 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
// Configure the cell...

EPinObject *data;

if (indexPath.row < self.mintHistoryList.count && [[self.mintHistoryList objectAtIndex:indexPath.row] isKindOfClass:[EPinObject class]])
    {
        data = [self.mintHistoryList objectAtIndex:indexPath.row];
        UILabel *pinGeneratedDateLabel = (UILabel *)[cell viewWithTag:100];
        pinGeneratedDateLabel.text = data.pinGeneratedTime;

        UILabel *pinNumberLabel = (UILabel *)[cell viewWithTag:101];
        pinNumberLabel.text = data.pinCode;

        UILabel *pinOriginalLabel = (UILabel *)[cell viewWithTag:102];
        pinOriginalLabel.text = [NSString stringWithFormat:@"%@%@", [Common currencyFloatRemake:data.pinOriginalAmount],[Common currencyCodeToSymbol:data.pinCurrencyCode]];
        pinOriginalLabel.adjustsFontSizeToFitWidth=YES;
        pinOriginalLabel.minimumScaleFactor=0.5;

        UILabel *pinLeftLabel = (UILabel *)[cell viewWithTag:103];
        pinLeftLabel.text = [NSString stringWithFormat:@"%@%@ left", [Common currencyFloatRemake:data.pinLeftAmount],[Common currencyCodeToSymbol:data.pinCurrencyCode]];
        pinLeftLabel.adjustsFontSizeToFitWidth=YES;
        pinLeftLabel.minimumScaleFactor=0.5;

        //THIS PART

        UIView *circleView = (UIView *)[cell viewWithTag:104];
        [circleView addSubview:[Customview alloc]initWithOriginal:data.pinOriginalAmount andLeft:data.pinLeftAmount];  
    }

数组没有变,其他标签也没有变,只是 subview 不对

正确: https://drive.google.com/file/d/0BwtBKpSMH_eHUWRfMkpzOTFaTkE/view?usp=sharing

向下和向上滚动: https://drive.google.com/file/d/0BwtBKpSMH_eHWkxmeDNGQUJvdnM/view?usp=sharing

最佳答案

我认为问题出在这里

UIView *circleView = (UIView *)[cell viewWithTag:104];
[circleView addSubview:[Customview alloc]initWithOriginal:data.pinOriginalAmount andLeft:data.pinLeftAmount];  

当您重用单元格时,它将包含 2 个 circleView... 你应该删除之前的那个,或者重用 circleView 本身

PS 图片对我不可用,我收到错误 403

关于滚动后 iOS UITableViewCell 无法正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32135167/

相关文章:

ios - 在字典键值对中,如何将值(其中value可以是不同类型的类型)解包为String

java - Google 的 j2objc 可以处理和转换二进制 JAR 文件吗?

iphone - 我怎样才能把一个字符串中所有单词的首字母变成大写iphone

iphone - 横向模式下 Cocos 2d 和 CGPoint 混淆

ios - CNContactPickerViewController [CNUI ERROR] 调用服务时出错 - 无法与辅助应用程序通信

ios - Firebase 安全规则 : . indexOn 唯一 ID

ios - Cordova iPhone X 启动图像最初在底部显示白色区域

objective-c - Cocoa中的CMD+Option+D模拟

ios - -[__NSArrayM 文本] : called without reason

ios - RestKit 映射操作无法在搜索的关键路径中找到任何嵌套对象表示