2012-02-15 1 views
0

У меня есть UITableView, отображающий список содержимого, и я хочу, чтобы каждый элемент в списке имел флажок, который может быть отмечен и не отмечен пользователем. Я создал UIButton для каждой ячейки, установил ее в accessView элемента и добавил целевой метод для вызова.Ошибка «непризнанного селектора, отправленного на экземпляр» для событий касания UIButton, добавленных программно

Однако, когда я пытаюсь щелкнуть по флажку, я всегда получаю ошибку «непризнанный селектор, отправленный на экземпляр», и я понятия не имею, почему. Я посмотрел повсюду, чтобы выяснить, что вызывает ошибку, и убедитесь, что мой вызов 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.."); 
    } 
} 

ответ

2

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

+0

AHAHA Я идиот! Спасибо, что указали на эту крайне очевидную ошибку. Я, вероятно, продолжу и удалю вопрос. – desmondhume

+0

@desmondhume, FYI, вы не можете удалить вопрос, как только получите ответ. Другое дело, это также не может показаться вообще (из-за этого ваша учетная запись может быть заблокирована навсегда). И, таким образом, лучше принять правильный ответ - единственный возможный хороший способ. StackOverflow никогда не сравнивает тип вопросов (идиот/эйнштейн) :) – Hemang

 Смежные вопросы

  • Нет связанных вопросов^_^