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