почему код внутри таблицы повторяется 4 раза для каждой строки? - PullRequest
1 голос
/ 16 февраля 2010

У меня есть переменная "conteggio" в моем коде, вы можете увидеть это ниже ... эта переменная должна увеличиваться на 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;

}

Ответы [ 3 ]

1 голос
/ 16 февраля 2010

Используйте indexPath.row, чтобы получить номер строки, к которой он обращается. Как сказал Джонатан, метод можно вызывать любое количество раз, поэтому не пытайтесь самостоятельно следить за строкой.

0 голосов
/ 16 февраля 2010

Как уже упоминалось, cellForRowAtIndexPath может вызываться несколько раз для каждой строки, когда табличное представление должно отображать ячейку (например, когда оно прокручивается в представление).

У вас есть несколько разделов в табличном представлении?
Предполагается, что conteggio является «абсолютным» уникальным номером строки независимо от раздела?

Если в каждом разделе одинаковое количество строк, то для вычисления абсолютного номера строки используется простая формула.

Однако, если каждый раздел имеет различное количество строк, вы можете вычислить абсолютное число строк, выполнив что-то вроде следующего:

conteggio = 0;
for (int s = 0; s < indexPath.section; s++)  
{
    conteggio += [tableView numberOfRowsInSection:s];
}
conteggio += indexPath.row + 1;

Если это возможно, вам может быть лучше перепроектировать fevMesi, чтобы находящиеся там объекты можно было извлечь, используя строки и секции, вместо того, чтобы каждый раз вычислять абсолютное число строк.

0 голосов
/ 16 февраля 2010

Нет договора относительно того, сколько раз этот метод будет вызываться для каждого рендера. Просто спросите у indexPath его индекс терминала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...