Я построил ячейку с помощью Interface Builder. Я загружаю клетки так:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"MassCircleNGTableCell" owner: self options: nil];
cell = circleNGCell;
self.circleNGCell = nil;
}
UISwitch *s = (UISwitch*)[cell.contentView viewWithTag: 20];
UILabel *label = (UILabel*)[cell.contentView viewWithTag:19];
label.text = @"some useful text";
И эта часть работает, я получаю свой стол с пользовательскими ячейками. Но, хотя я могу установить начальное состояние, я не знаю, как реагировать на нажатие переключателем пользователем! Я попробовал это:
[leftSwitch addTarget:self action:@selector(setCircle) forControlEvents:UIControlEventTouchUpInside];
Но приложение вылетает с "[MassCircleNGViewController setCircle]: нераспознанный селектор отправлен на экземпляр 0xdd024b0 '"
Есть идеи?
[Добавлено позже (по запросу)]:
// implementation of [MassCircleNGViewController setCircle] really just a stub here
- (IBAction) setCircle: (id) sender {
NSLog(@"setCircle sender == %@", (UISwitch*)sender);
}
Реальная проблема заключалась в том, как я пытался добавить цель. Нужно это двоеточие после имени селектора в списке аргументов!
[leftSwitch addTarget:self action:@selector(setCircle:) forControlEvents:UIControlEventValueChanged];