0

我有一个包含 3 个部分的表视图的应用程序。显示数据一切正常,但是当我更改设备方向(从纵向到横向,反之亦然)时,我的表格视图中添加了额外数量的行

事实上,在调试我的应用程序时,我发现cellForRowAtIndexPath:每次旋转设备时都会执行该操作。

一些好人可以告诉我如何解决这个问题吗?

提前致谢。

4

2 回答 2

1

正如怀疑的那样,您的问题是您在 tableView:numberOfRowsInSection: 方法中向数据源数据添加项目。每次表格询问一个部分中有多少行时,您都会向数据结构添加更多数据。请记住,数据源方法将被调用很多次。

您需要在任何数据源方法之外创建一次数据结构。您的数据源方法对于您的数据结构应该是只读的。他们应该简单地返回一个计数。不应在数据源方法中进行其他处理。

于 2012-10-14T00:05:17.003 回答
0

这是代码!

`- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section==0) {
    for (int i=0; i < self.TiersArray.count; i++) {
         if (([[[self.TiersArray objectAtIndex:i]t_client] isEqualToNumber:one])||        ([[[self.TiersArray objectAtIndex:i]t_client] isEqualToNumber:three])) 
   {
            [ClientsArray addObject:[self.TiersArray objectAtIndex:i]];
        }

    }
return self.ClientsArray.count;
}
else if(section==1){
    for (int i=0; i < self.TiersArray.count; i++) {
        if (([[[self.TiersArray objectAtIndex:i]t_client]isEqualToNumber:two])||([[[self.TiersArray objectAtIndex:i]t_client]isEqualToNumber:three])) {
            [ProspectsArray addObject:[self.TiersArray objectAtIndex:i]];
        }

    }
    return self.ProspectsArray.count;
}
else{
    for (int i=0; i < self.TiersArray.count; i++) {
        if ([[[self.TiersArray objectAtIndex:i]t_fournisseur] isEqualToNumber:one ]) {
            [FournisseurArray addObject:[self.TiersArray objectAtIndex:i]];
        }

    }
    return self.FournisseurArray.count;
}
}

`

于 2012-10-13T23:58:54.073 回答