У меня есть UITableView, отображающий список содержимого, и я хочу, чтобы у каждого элемента в списке был флажок, который может быть отмечен и не отмечен прикосновением пользователя. Я создал UIButton для каждой ячейки, установил для нее accessoryView и добавил целевой метод для вызова.
Тем не менее, я всегда получаю сообщение об ошибке «нераспознанный селектор отправлен в экземпляр» всякий раз, когда я пытаюсь установить флажок, и я понятия не имею, почему. Я посмотрел повсюду, чтобы выяснить причину ошибки, и убедился, что мой вызов addTarget и выбранный метод используют правильный синтаксис, но, возможно, я что-то упустил. Что мне нужно изменить, чтобы исправить эту ошибку?
Вот код для создания ячеек:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
// Set up the cell...
PFObject *tempMap = [searchResults objectAtIndex: [indexPath row]];
cell.textLabel.text = [tempMap objectForKey:@"mapName"];
// Add checkbox to cell
UIButton *checkBox = [UIButton buttonWithType:UIButtonTypeCustom];
checkBox.bounds = CGRectMake(0, 0, 30, 30);
cell.accessoryView = checkBox;
checkBox.tag = indexPath.row;
[checkBox setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
[checkBox setImage:[UIImage imageNamed:@"checkbox-checked.png"] forState:UIControlStateSelected];
[checkBox setImage:[UIImage imageNamed:@"checkbox-pressed.png"] forState:UIControlStateHighlighted];
[checkBox addTarget:self action:@selector(checkBoxButton:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:checkBox];
}
return cell;
}
Это вызываемый метод, checkBoxButton:
- (void)checkboxButton:(id)sender
{
UIButton *checkBox = sender;
if (checkBox.selected)
{
[selectedMaps removeObject:[searchResults objectAtIndex:checkBox.tag]];
NSLog(@"..Map Deselected..");
}
else
{
[selectedMaps addObject:[searchResults objectAtIndex:checkBox.tag]];
NSLog(@"..Map Selected..");
}
}