Получение UITableViewCell из версии iOS 7

У меня есть несколько объектов пользовательского интерфейса в ячейке, у которых есть экземпляр распознавателя жестов. Мне нужно получить ячейку, в которой находится нажатый объект. У меня есть метод ниже для его получения, но он работает только до iOS 7:

UITableViewCell *cell = (UITableViewCell *)[[[sender view] superview]superview]; 

для iOS 6 он возвращает UITableViewCell

для iOS 7 он возвращает UITableViewCellScrollView

Я думаю, что новая ячейка имеет несколько дополнительных представлений в iOS 7, поэтому я UITableViewCellScrollView вместо UITableViewCell как и раньше.

Как вы можете видеть, полагаться на иерархию представлений не очень хороший подход – Apple может сломать ее в любое время.

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

Лучший способ получить ячейку просмотра таблицы из ее подчиненного объекта – преобразовать местоположение subview в местоположение в представлении таблицы, а затем спросить представление таблицы для пути индекса ячейки в этой точке:

 CGPoint subviewPosition = [sender convertPoint:CGPointZero toView:self.tableView]; NSIndexPath* indexPath = [self.tableView indexPathForRowAtPoint:subviewPosition]; 

Затем вы можете получить ячейку для этого указательного пути:

 UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
 CGPoint subviewPosition = [sender convertPoint:CGPointZero toView:self.tableView]; NSIndexPath* indexPath = [self.tableView indexPathForRowAtPoint:subviewPosition]; UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath]; NSIndexPath *path=[self.tableView indexPathForCell:cell]; 
Interesting Posts
Давайте будем гением компьютера.