我的代码中有一个名为“conteggio”的变量,你可以在下面看到...这个变量在我的tableview的每一行都要增加1 ...当我尝试这样做时,我收到一个像:4,8,12,16等。每行4的倍数......似乎每行重复4次代码。
如果我在桌子上来回滚动那些数字会变成倍数。
这是我的代码:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellID"];
if (cell == nil){
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"cellID"] autorelease];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cellID"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
NSString *alphabet = [fevIndice objectAtIndex:[indexPath section]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", alphabet];
NSArray *fv = [fev filteredArrayUsingPredicate:predicate];
conteggio++;
NSString *string = [NSString stringWithFormat:@"%d", conteggio];
cell.detailTextLabel.text = string;
if ([fv count]>0) {
NSString *cellValue = [fv objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
//indexPath.section; //[fv count] numero di elementi in una section;
//cell.detailTextLabel.text = [fevMesi objectAtIndex:conteggio];
//cell.imageView.image = [UIImage imageNamed:[fevIcona objectAtIndex:]];
}
cell.detailTextLabel.numberOfLines = 3;
cell.detailTextLabel.font = [UIFont systemFontOfSize:11.0];
return cell;
}
答案 0 :(得分:1)
使用indexPath.row获取它正在调用的行号。就像乔纳森所说,这种方法可以被调用多次,所以不要试图自己跟踪这一行。
答案 1 :(得分:0)
没有关于每个渲染调用该方法的次数的合同。只需询问indexPath
的终端索引。
答案 2 :(得分:0)
正如其他人已经提到的那样,每当表视图需要显示单元格时(例如,当它滚动到视图中时),每行可以多次调用cellForRowAtIndexPath。
您的表格视图中有多个部分吗?
不管是哪个部分,conteggio都应该是“绝对的”唯一行号吗?
如果每个部分的行数相同,那么计算绝对行数就是一个简单的公式。
但是,如果每个部分的行数不同,您可以通过执行以下操作来计算绝对行数:
conteggio = 0;
for (int s = 0; s < indexPath.section; s++)
{
conteggio += [tableView numberOfRowsInSection:s];
}
conteggio += indexPath.row + 1;
如果可能的话,重新设计fevMesi可能会更好,因此可以使用行和节来检索其中的对象,而不必每次都计算绝对行数。