UITableViewController customCell消失并在滚动和加载时显示

时间:2014-04-02 17:11:05

标签: ios objective-c

我一直在寻找2天以上的答案。它似乎没有解决。

这是单元格的代码

- (myCustomCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    CustomData *m = (CustomData *)[self.allCustomData objectAtIndex:indexPath.row];

    static NSString *CellIdentifier = @"customCell";

    myCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    [cell setBackgroundColor:[UIColor colorWithRed:255.0f green:255.0f blue:255.0f alpha:1]];
    [cell.customTitle setText:m.name];
    [cell.customStatus setText:@"Download"];

    NSLog(@"%@",cell.customTitle.text);

    return cell;
}

'细胞'永远不会回来。日志始终打印正确的文本。但由于某种原因,细胞显得空白。在加载时我注意到第一个单元格显示为空,然后在滚动时,任意顺序的2-3个单元格随机变为空。第一个单元格经常出现在滚动状态。

我似乎无法理解问题所在。


更新

这是两个截屏。第一个是表如何加载,我已经将背景颜色用于调试目的。如您所见,第一个单元格未显示。

enter image description here

下面是第二个屏幕截图,我更改了方向并滚动了一下。你会看到第一个细胞如何神奇地出现,第二个细胞消失了。

enter image description here

另外,为了调试目的,我添加了这两种方法。

- (void)tableView:(UITableView *)tableView willDisplayCell:(dtEditionCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

NSLog(@"Display %@ %d %f",cell.editionTitle.text,indexPath.row,cell.frame.origin.x);


}
 - (void)tableView:(UITableView *)tableView didEndDisplayingCell:(dtEditionCell *)cell   forRowAtIndexPath:(NSIndexPath *)indexPath{

NSLog(@"End Display %@ %d %f",cell.editionTitle.text,indexPath.row,cell.frame.origin.x);
}

日志按预期打印。使用正确的文本可以看到所有单元格。

1 个答案:

答案 0 :(得分:-1)

我不知道它是否有事可做,但你展示的方法并不完全是tableview使用的方法。以下是我使用自定义单元格的方法。我做得很多而且工作正常:

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    TextCell *cell = [tableView dequeueReusableCellWithIdentifier:@"textCellId" forIndexPath:indexPath];

    TextFieldContent *cellContent=[[self.dataSource objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
    cell.titleLabel.text=cellContent.titleLabel;
    cell.textField.placeholder=cellContent.placeHolder;
    cell.textField.tag=cellContent.tag;
    cell.textField.keyboardType=UIKeyboardTypeDecimalPad;
    cell.textField.delegate=self;

    return cell;

}

TextFieldContent是一个cutom对象,它包含自定义单元格的所有属性。为了更容易实现。