Используя фантастические посты на этом форуме, я создал переключатель в виде accessoryView в tableView. При касании переключателя вызывается мое действие (switchChanged). Только отправитель имеет допустимое значение, событие 0x0.
Добавление цели в switchView:
[switchView addTarget:self action:@selector(switchChanged:forEvent:) forControlEvents:(UIControlEventValueChanged | UIControlEventTouchDragInside)];
Акция:
- (void) switchChanged:(id)sender forEvent:(UIEvent *)event {
if(event) {
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:[[[event touchesForView:sender] anyObject] locationInView:self.tableView]];
IFDFlightlogFormQuestions *question = [self.resultsController objectAtIndexPath:indexPath];
NSLog(@"IFDNewFlightlogViewController_Pad:switchChanged Switch is %@ xmlAttrib %@",[sender isOn],question.XmlAttrib);
[self.xmlResults setValue:([sender isOn])?@"true":@"false" forKey:question.XmlAttrib];
}
}
Использование action:@selector(switchChanged: forEvent:)
- Добавлен пробел - без изменений.
Использование action:@selector(switchChanged::)
- удалено forEvent
- нераспознанный селектор.
Моя цель - получить indexPath для tableView, чтобы я мог изменить значение в своем словаре.
В настоящее время я могу использовать только информацию об отправителе, но мне нужна информация о событии:
- (void) switchChanged:(id)sender forEvent:(UIEvent *)event {
UISwitch *switchView = (UISwitch *)sender;
UITableViewCell *cell = (UITableViewCell *)switchView.superview;
UITableView *tableView = (UITableView *)cell.superview;
NSIndexPath *indexPath = [tableView indexPathForCell:cell];
IFDFlightlogFormQuestions *question = [self.resultsController objectAtIndexPath:indexPath];
NSLog(@"IFDNewFlightlogViewController_Pad:switchChanged Switch is %@ xmlAttrib %@",([sender isOn])?@"On":@"Off",question.XmlAttrib);
[self.xmlResults setValue:([sender isOn])?@"true":@"false" forKey:question.XmlAttrib];
}
Есть ли какие-нибудь указатели на получение информации о событии по этому поводу?