1

我有一个以编程方式显示内容的 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;
}

提前致谢

4

3 回答 3

6

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

NSString *oneLine = [entrys objectAtIndex:indexPath.row];
于 2012-05-15T09:03:51.143 回答
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];

或者

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

于 2012-05-15T09:00:44.283 回答
1

问题就在这里

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

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

于 2012-05-15T09:10:06.550 回答