自定义UITableViewCell在点击之前显示为不可见,是"偏移"并缺少一行

时间:2014-05-25 15:34:04

标签: ios objective-c uitableview

我已经按照here编写的教程。由- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath循环的内容应包含3个元素。

问题如下:

  1. 所有行都是完全不可见的,直到我点击一个,然后出现我点击的那个。
  2. 点击后只显示前两(三)行
  3. 最后一个,应该是列表视图中的第一行,根本不显示, 即使点击也是如此。
  4. 这是我特别提到的代码:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        SECTThreadCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
        cell = [[SECTThreadCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    
        cell.textLabel.text = [[self.threadList objectAtIndex:indexPath.row] valueForKey:@"content"];
        cell.wowLabel.text = [[self.threadList objectAtIndex:indexPath.row] valueForKey:@"content"];
    
        NSLog(@"%@", cell);
        return cell;
    }
    

    但是,如果我将其更改为此,它可以正常工作,但显然没有继承自定义类:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        SECTThreadCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    
        cell.textLabel.text = [[self.threadList objectAtIndex:indexPath.row] valueForKey:@"content"];
        cell.wowLabel.text = [[self.threadList objectAtIndex:indexPath.row] valueForKey:@"content"];
    
        NSLog(@"%@", cell);
        return cell;
    }
    

    循环似乎存在某种问题,但我无法确切地知道它是什么。有任何想法吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个:

- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"Cell";

    SECTThreadCell *cell = (SECTThreadCell *)[theTableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        cell = [[SECTThreadCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }

    cell.textLabel.text = [[self.threadList objectAtIndex:indexPath.row] valueForKey:@"content"];
    cell.wowLabel.text = [[self.threadList objectAtIndex:indexPath.row] valueForKey:@"content"];

    return cell;
}

如果单元格为零,请尝试创建一个新单元格。 有关dequeuReusableCellWithIdentifier:的详细信息,请参阅Apple Documentation。 的问候,

答案 1 :(得分:0)

你确定在主线程上调用[tableView reloadData]吗?任何UI任务都必须在主线程上执行。请在函数中放置一个断点并检查它是否被主线程命中。