У меня есть tableview
, каждая ячейка содержит текст и кнопку. Для каждой кнопки в каждой ячейке в cellForRowAtIndexPath
я определяю действие с помощью селектора следующим образом:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
ProductTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ProductCell" forIndexPath:indexPath];
cell.stateButton.tag = indexPath.row;
[cell.stateButton addTarget:self action:@selector(stateChange:) forControlEvents:UIControlEventTouchUpInside];
/// Rest of code
return cell;
}
В какой-то момент в потоке я хочу создать действие для всех кнопок в моем tableview
, Я делаю это так:
#pragma mark - Delegate
- (void)onAllSwitchesStateChange{
for(int i = 0; i < [[SsrDeviceManager instance] ssrDevices].count; i ++){
ProductTableViewCell* cell = (ProductTableViewCell *)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
UIButton* stateButton = [cell stateButton];
[stateButton performSelector:@selector(stateChange:) withObject:nil];
}
}
Это мой метод выбора:
-(void)stateChange:(UIButton*)sender{
[self.activityIndicator sizeToFit];
[sender addSubview:self.activityIndicator];
[self.activityIndicator startAnimating];
//// Rest of code
}
Однако, почему я пытаюсь запустить этот код, я получаю сообщение об ошибке, и приложение вылетает с этим сообщение:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIButton stateChange:]: unrecognized selector sent to instance 0x1023686d0'
*** First throw call stack:
(0x233133180 0x23230b9f8 0x23304f9bc 0x25f94c220 0x2331389c8 0x23313a65c 0x101073bdc 0x100fdd844 0x25f922300 0x25f3cb424 0x25f3cb744 0x25f3ca7b0 0x25f9595c4 0x25f95a7ec 0x25f93a85c 0x25fa009d4 0x25fa03100 0x25f9fc330 0x2330c4f1c 0x2330c4e9c 0x2330c4784 0x2330bf6c0 0x2330befb4 0x2352c079c 0x25f920c38 0x10102b794 0x232b828e0)
Как сгенерировать действие нажатия для всех кнопок одновременно