Ошибка получения «нераспознанного селектора, отправленного в экземпляр» для событий касания UIButton, добавленных программным способом - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть 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..");
    }
}

1 Ответ

2 голосов
/ 16 февраля 2012

Вы регистрируете селектор checkBoxButton:, но на самом деле вы используете checkboxButton: (обратите внимание на разницу в заглавных буквах первого "B").

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