Я создал пользовательскую ячейку с UIButton
для использования в качестве флажка. При нажатии я изменяю изображение кнопки на отмеченный флажок. Что происходит, если при установке какой-либо из флажков при прокрутке появляется другая ячейка, которая не была отмечена, появляется флажок. Я предполагаю, что убираю ячейку с отмеченным флажком и повторно использую ее. Я не могу понять, как правильно установить изображения. Я создал массив изображений, чтобы сохранить состояние изображений для каждой кнопки, но это не работает. Вот мой код:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Celula de Bebidas";
MeuChurrasTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.precoTextField.adjustsFontSizeToFitWidth = NO;
if (indexPath.section == 0) {
cell.nomeLabel.text = [nomeBebidasAlcoolicas objectAtIndex:indexPath.row]; //nome da bebida
cell.precoTextField.text = [precoBebidasAlcoolicas objectAtIndex:indexPath.row];
[cell.checkboxButton setImage:[imagemBebidasAlcoolicasCheckbox objectAtIndex:indexPath.row] forState:UIControlStateNormal];
} else {
cell.nomeLabel.text = [nomeBebidasNaoAlcoolicas objectAtIndex:indexPath.row];
cell.precoTextField.text = [precoBebidasNaoAlcoolicas objectAtIndex:indexPath.row];
[cell.checkboxButton setImage:[imagemBebidasNaoAlcoolicasCheckbox objectAtIndex:indexPath.row] forState:UIControlStateNormal];
}
// identifica cada botao para depois saber qual foi presssionado.
[cell.checkboxButton setTitle:cell.nomeLabel.text forState:UIControlStateNormal];
return cell;
}
Кстати, если я попробую
if (cell == nil)
по какой-то причине он никогда не входит внутрь if, даже когда таблица вызывается впервые.
Вот код, используемый для установки изображения UIButton:
- (void)checkboxPressed:(UIButton *)sender onCell:(MeuChurrasTableViewCell *)cell
{
NSIndexPath *cellPath = [self.tableView indexPathForCell:cell];
// NSLog(@"%@ clicked", [nomeBebidasAlcoolicas objectAtIndex:cellPath.row]);
if ([sender isSelected]) { //Botao nao selecionado
[sender setImage:unselectedImage forState:UIControlStateNormal];
[sender setSelected:NO];
[self.brain.bebidasSelecionadas removeObject:sender.titleLabel.text];
if (cellPath.section == 0)
[imagemBebidasAlcoolicasCheckbox insertObject:unselectedImage atIndex:cellPath.row];
else
[imagemBebidasNaoAlcoolicasCheckbox insertObject:unselectedImage atIndex:cellPath.row];
} else { //Botao selecionado
[sender setImage:selectedImage forState:UIControlStateSelected];
[sender setSelected:YES];
[self.brain.bebidasSelecionadas addObject:sender.titleLabel.text];
if (cellPath.section == 0)
[imagemBebidasAlcoolicasCheckbox insertObject:selectedImage atIndex:cellPath.row];
else
[imagemBebidasNaoAlcoolicasCheckbox insertObject:selectedImage atIndex:cellPath.row];
}
}
Любая помощь?