从数组设置单元格的文本

时间:2011-08-07 20:07:37

标签: iphone objective-c xcode uitableview nsarray

我想我在这里错过了一些非常简单的事情。现在,每个单元格的单元格文本都设置为相同的文本。任何人都可以看到我的错误吗?

for (ProductItem *code in codeAray1)
        {
            NSString *codeText = code.code;
            NSString *nameText = code.name;
            NSString *cellText = [NSString stringWithFormat:@"%@: %@", codeText, nameText];
            cell.textLabel.text = cellText;
        }

这就是从SQLite查询创建数组的方法:

        ProductItem *code = [[HCPCSCodes alloc] init];
        code.code = [NSString stringWithCString:(char *)sqlite3_column_text(statement, 0) encoding:NSUTF8StringEncoding];
        code.name = [NSString stringWithCString:(char *)sqlite3_column_text(statement, 1) encoding:NSUTF8StringEncoding];
        code.description = [NSString stringWithCString:(char *)sqlite3_column_text(statement, 2) encoding:NSUTF8StringEncoding];
        [codeAray1 addObject:code];
        [code release];
    }

1 个答案:

答案 0 :(得分:1)

在第一个代码段中的每个循环迭代中将文本设置为相同的单元格(无论代码在哪里)...您需要根据单元格的当前行设置文本

基本上,该代码应该在表的数据源中的cellForRowAtIndexPath:方法中,如下所示:

- (UITableViewCell*) tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath)*indexPath{
    UITableViewCell *cell = ...// create/deque/setup cell

    // Now get just the code that should be displayed in a given row
    ProductItem *code = [codeAray1 objectAtIndex: indexPath.row];
    NSString *codeText = code.code;
    NSString *nameText = code.name;
    NSString *cellText = [NSString stringWithFormat:@"%@: %@", codeText, nameText];
    cell.textLabel.text = cellText;

    return cell;
}