0

我有一个 UITableView 从 HTML 中获取数据。提取工作正常,我通常有大约 20 个单元格要显示,从 1、2、3、4、5 到 20。

但是,在提取之后,单元格仅显示所有单元格上第一个单元格中的内容。(即 1、1、1、1、1、1)如果我向下滚动,我会看到 6、7、8、...、20。如果我再次向上滚动,我会看到表格变成普通的...

我正在测试代码,我在insertNewObject类中发现如果我在0索引处插入,那么一切都会正常。但是,如果我只是在最后一个索引处添加对象或插入对象,则不适用于我。

这是我的 insertNewObject 类的代码:

- (void)insertNewObject:(id)sender {
    if (!_objects) {
        _objects = [[NSMutableArray alloc] init];
    }

// Working code, but I want the order from the top 1, 2, 3, ..., 20 rather than 
// 20, 19, 18, ..., 2, 1
// [_objects insertObject:sender atIndex:0];

// And the code below doesn't show up correctly...
//    [_objects insertObject:sender atIndex:(_objects.count)];
//    [_objects addObject:sender];

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}

这很奇怪,我认为这与绘图有关,因为如果我继续上下滚动并“清理”显示,UITableView 会显示一切正常......但是如果我执行 setDisplay,则什么都没有发生......刷新表也没有解决问题...

任何想法?谢谢

4

1 回答 1

0

您的问题中没有足够的上下文可以确定,但我认为您可能正在尝试在这里做太多工作。您可以使用该NSMutableArray方法addObject:将新对象附加到数据数组的末尾。完成此操作后,您应该能够调用reloadData并且您的 tableView 将重绘自身以包含新数据项的单元格。

- (void)insertNewObject:(id)sender
{
    if (!_objects) {
        _objects = [[NSMutableArray alloc] init];
    } 
    [_objects addObject:sender];
    [self.tableView reloadData];
}
于 2012-08-16T03:41:38.330 回答