Так технически это не UISwitch, а скорее UIView с помощью пользовательского класса, который ведет себя так же, как UISwitch (https://github.com/domesticcatsoftware/DCRoundSwitch)indexPath возвращает null для пользовательского UISwitch в ячейке tableView?
Я использую этот DCRoundSwitch на каждой строке таблицы. Я хочу получить indexPath строки, в которой включен DCRoundSwitch, но он возвращает значение null.
Вот как DCRoundSwitch настроен (использует измененное значение):
Вот мой метод togglePublic:
-(void)togglePublic:(UIControl *)button withEvent:(UIEvent *)event {
DCRoundSwitch *switch1 = (DCRoundSwitch *)button;
UITableViewCell *cell = (UITableViewCell *)switch1.superview;
NSIndexPath *indexPath = [self.tableview indexPathForCell:cell];
NSLog(@"PUBLICSWITCH PRESSED %@", indexPath);
//NSIndexPath * indexPath = [self.tableview indexPathForRowAtPoint:[[[event touchesForView: button] anyObject] locationInView: self.tableview]];
if (indexPath == nil){
return;
}
AHBContact *contact = [self.contacts[indexPath.section] allValues][0][indexPath.row];
NSLog(@"Public switch toggled for: %@", contact);
}
Как вы можете видеть, indexPath возвращает ноль, как если оператор всегда возвращает метод до того, как мы перейдем к сообщению журнала «Коммутатор, переключенный для:».
хорошая идея. что хороший/быстрый способ проверить, что он возвращает? – Rohan
nvm. получил это - ты был прав! это был один ребенок ниже, чем ожидалось. – Rohan