Получение NSIndexPath строки для UISwitch - PullRequest
2 голосов
/ 19 марта 2012

У меня есть табличное представление с пользовательскими UITableViewCells, каждая строка в таблице имеет UILabel, UISwitch и индикатор раскрытия подробностей.

Я ищу лучший способ захвата UIControlEventChanged для коммутатора, но я такженужен NSIndexPath коммутатора, который был изменен для обновления Core Data.

Мне также не нужен UISwitch в качестве вспомогательного типа.

Я искал это в течение нескольких часов, и решение, котороепродолжает всплывать, чтобы использовать

[switch addTarget:self action:@selector(switchTapped:) forControlEvents:UIControlEventChanged];

, затем в методе switchTapped: используйте следующее, чтобы получить NSIndexPath

NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell *)[[sender superview] superview]];

Есть ли лучший способ сделать это?У меня уже есть подкласс UITableViewCell, могу ли я поместить метод в этот класс, чтобы вернуть NSIndexPath для данного переключателя?

Заранее спасибо за любую помощь

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

Я воспользуюсь еще одной возможностью для ссылки на мой ответ здесь - теги и просмотр иерархии неуклюжи, подвержены ошибкам и излишни, и я вижу, что они рекомендуются повсеместно в SO-ответах. Вы можете найти путь индекса для любого элемента управления, используя его фрейм и метод indexPathForRowAtPoint: табличного представления.

0 голосов
/ 19 марта 2012

Установка правильного тега для переключателя в каждой строке таблицы является возможным решением.Установите тег в соответствии с индексным путем строки, в которой он присутствует.

Таким образом вы избежите возможных проблем, которые могут возникнуть при изменениях в иерархии представления.

Это сообщение также может помочь вам.

...