我有一个包含 3 个部分的表视图的应用程序。显示数据一切正常,但是当我更改设备方向(从纵向到横向,反之亦然)时,我的表格视图中添加了额外数量的行
事实上,在调试我的应用程序时,我发现cellForRowAtIndexPath:
每次旋转设备时都会执行该操作。
一些好人可以告诉我如何解决这个问题吗?
提前致谢。
我有一个包含 3 个部分的表视图的应用程序。显示数据一切正常,但是当我更改设备方向(从纵向到横向,反之亦然)时,我的表格视图中添加了额外数量的行
事实上,在调试我的应用程序时,我发现cellForRowAtIndexPath:
每次旋转设备时都会执行该操作。
一些好人可以告诉我如何解决这个问题吗?
提前致谢。
正如怀疑的那样,您的问题是您在 tableView:numberOfRowsInSection: 方法中向数据源数据添加项目。每次表格询问一个部分中有多少行时,您都会向数据结构添加更多数据。请记住,数据源方法将被调用很多次。
您需要在任何数据源方法之外创建一次数据结构。您的数据源方法对于您的数据结构应该是只读的。他们应该简单地返回一个计数。不应在数据源方法中进行其他处理。
这是代码!
`- (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;
}
}
`