As linhas UITableViewCells do iOS são recicladas e a tag não funciona

Eu gostaria de buscar alguma ajuda na configuração de tag para botões nas células. Esta é uma pergunta com um link para o anterior que eu postei:iOS usando o NSDictionary para carregar dados em seções e linhas

No entanto, embora eu pudesse passar dados dinamicamente agora, meu botão de renovação em cada uma das linhas não conseguia obter os dados e só detectava o mesmo título de cada seção quando qualquer uma das linhas da seção era selecionada.

Com base no que eu li até agora, é porque o botão está sendo reciclado, portanto, incapaz de detectar qual livro está sendo selecionado corretamente. Eu tentei definir tag:

cell.renewButton.tag = indexPath.row;

Como meu código se parece agora:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

static NSString *CellIdentifier = @"Cell";
UserCustomCell *cell = (UserCustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.bookTitle.frame = CGRectMake(12, 0, 550, 40);

if (cell == nil) {
    [[NSBundle mainBundle] loadNibNamed:@"UserCustomCell" owner:self options:nil];
    cell = userCustomCell;
    self.userCustomCell = nil;
    cell.renewButton.tag = indexPath.row;
}

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    cell.bookTitle.frame = CGRectMake(12, 0, 550, 40);
    cell.renewButton.frame = CGRectMake(600, 14, 68, 24);
}
[cell.renewButton useBlackActionSheetStyle];

// ########## EDIT INICIAR AQUI dataSource = [[NSMutableDictionary alloc] init]; // Isso precisaria ser um ivar

for (NSDictionary *rawItem in myArray) {
    NSString *date = [rawItem objectForKey:@"date"]; // Store in the dictionary using the data as the key

    NSMutableArray *section = [dataSource objectForKey:date]; // Grab the section that corresponds to the date

    if (!section) { // If there is no section then create one and add it to the dataSource
        section = [[NSMutableArray alloc] init];
        [dataSource setObject:section forKey:date];
    }

    [section addObject:rawItem]; // add your object
}
self.dataSource = dataSource;
//NSLog(@"Data Source Dictionary: %@", dataSource); 

NSArray *sections =[[dataSource allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSString *sectionTitle = [sections objectAtIndex:indexPath.section];

NSArray *items = [dataSource objectForKey:sectionTitle];

NSDictionary *dict = [items objectAtIndex:indexPath.row];
cell.bookTitle.text = [dict objectForKey:@"name"];
cell.detail.text = [NSString stringWithFormat:@"Due Date: %@ Due Time: %@", 
                    [dict objectForKey:@"date"], [dict objectForKey:@"time"]];


cell.renewButton.tag = indexPath.row;
return cell;   

}

mas não funciona de todo. Seria muuuito grato por quaisquer sugestões :) Obrigado !!

P.S: Minha cópia do xcode não é atualizada, somente até a versão 4. Vi algumas pessoas mencionando o armazenamento do status de tags no DataModel, mas elas só estão disponíveis em versões mais recentes. :)

questionAnswers(2)

yourAnswerToTheQuestion