0

我正在尝试将数据插入到我创建的行中,我将在我的日志中获取所有信息,但它只显示我所有行中的最后一个信息。任何人都可以提出一种避免此错误的方法吗?

请给我一些建议谢谢!

4

3 回答 3

2

实际上,您永远不会重新填充单元格。您正在创建初始可见单元格,并且只是以相同的内容重用它们。请看下面:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
 *)indexPath
{
    static NSString *CellIdentifier = @"TestCell";

    TestCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
    // HERE YOU ONLY WANT TO INSTANTIATE THE CELL
        NSArray *topObjects = [[NSBundle mainBundle] loadNibNamed:@"TestCell" owner:nil options:nil];

        for (id currentObject in topObjects)
        {
            if([currentObject isKindOfClass:[TestCell class]])
            {
                cell = (TestCell *) currentObject;    
                break;
            }
        }
    }

    // HERE YOU WOULD ACTUALLY POPULATE THE CELL WITH DATA
    NSArray *array = [server get_texts:10 offset:0 sort_by:0 search_for:@""];

    NSMutableString *s = [[NSMutableString alloc] init];
    for (testMetaData *m in array){
        [s appendFormat:@"%@ %@ \n", m.title,m.note];

        cell.title.text = m.title;

        NSLog(@" title %@ ", m.title);

    }

    return cell;
}

关于的一些信息UITableView

因此,正确设置的 tableView 仅分配和使用有限数量的UITableViewCells。分配后,比如说 5 个单元格(这个数字由“在任何给定时间你能看到多少个单元格?”确定),它将采用一个已经创建的单元格,该单元格已经滚动出可见区域,并将其返回给您在您使用的那种方法中,因此您可以重新填充它。因此,cell变量不会nil在那个时候出现,并且您的服务器代码永远不会被调用。

于 2013-10-18T23:24:51.577 回答
0

我认为这与您的 for 循环有关。

NSMutableString *s = [[NSMutableString alloc] init];
            for (testMetaData *m in array){
                [s appendFormat:@"%@ %@ \n", m.title,m.note];

                cell.title.text = m.title;

                NSLog(@" title %@ ", m.title);

            }

cell.title.text = m.title将在 for 循环结束时获得最后的m.title信息。

于 2013-10-19T02:30:42.983 回答
0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
 *)indexPath
{
//Load Cell for reuse
   static NSString *CellIdentifier = @"TestCell";
   TestCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
   if (cell == nil) {
      cell =[ [[NSBundle mainBundle] loadNibNamed:@"TestCell" owner:nil options:nil] lastObject];
   }
//appending text and config cell
       NSArray *array = [server get_texts:10 offset:0 sort_by:0 search_for:@""];
       NSString *t = [array objectAtIndex:indexPath.row];
//Config cell - Not sure what you want. Maybe 10 different rows
        cell.title.text = t;
        return cell;

}
于 2013-10-21T16:31:53.707 回答