UITableView在滚动后加载相同的标题

时间:2012-05-15 08:58:38

标签: iphone objective-c xcode uitableview

我有一个以编程方式显示内容的UITableView。

第一次打开时单元格加载正常,但滚动后它们都显示相同的标题,我认为是最后一个单元格标题。

如果选择单元格,则打开的基础TableView仍然可以正常工作。

我在SO上查找解决方案,但它们要么对我不起作用,要么我太愚蠢无法理解问题,这看起来是重复使用单元格来获取某种节约资源。

我将发布cellForRowAtIndexPath,因为我认为问题就在那里,如果需要任何进一步的代码,请告诉我。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
           cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    NSString *oneLine = [entrys objectAtIndex:position];
    NSArray *lineComponents = [oneLine componentsSeparatedByString:@";"];

    cell.textLabel.text = [lineComponents objectAtIndex:0];
    cell.textLabel.textColor = [UIColor colorWithRed:0.0 green:0.8 blue:0.2 alpha:1.0];

    if (position < [entrys count] -2 ) {
        position++;
    }



    return cell;
}

提前致谢

3 个答案:

答案 0 :(得分:6)

您根本没有使用indexPath参数。它应该是:

NSString *oneLine = [entrys objectAtIndex:indexPath.row];

答案 1 :(得分:1)

尝试这一个而不是位置

 NSString *oneLine = [entrys objectAtIndex:indexpath.row];
    NSArray *lineComponents = [oneLine componentsSeparatedByString:@";"];

    cell.textLabel.text = [lineComponents objectAtIndex:0];
    cell.textLabel.textColor = [UIColor colorWithRed:0.0 green:0.8 blue:0.2 alpha:1.0];

如果它仍然不起作用,那么您的阵列未正确初始化。初始化

答案 2 :(得分:1)

问题出在这里

 if (position < [entrys count] -2 ) {
        position++;
    }

表格中的行数大于数组entrys,由于这种情况,您的position会递增到最后一个对象,之后这个条件永远不会被调用,因此position点最后一个对象。 你能告诉你从tableView:numberOfRowsInSection:方法回来了什么吗?