Привет. Я тестировал свое приложение на iOS 6, 7 и теперь 8 (бета-версия 5). Мой UITableView
с пользовательским UITableViewCell
работает нормально на 6 и 7. Однако на iOS 8 я получаю сбой при попытке получить доступ к подсмотру (текстовому полю) ячейки.
Мне известно о том, что в iOS 7 есть другой вид в иерархии ячеек. Как ни странно, похоже, что это не так в iOS 8. Вот код, который я использую:
//Get the cell
CustomCell *cell = nil;
//NOTE: GradingTableViewCell > UITableViewCellScrollView (iOS 7+ ONLY) > UITableViewCellContentView > UIButton (sender)
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
cell = (CustomCell *)sender.superview.superview;
} else {
cell = (CustomCell *)sender.superview.superview.superview;
}
//Get the cell index path
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
//etc.
NSLog(@"%@", cell.textField); //<---Crashes here
Итак, как вы можете видеть, я учитываю дополнительный вид в iOS 7. После добавления некоторых точек останова и более пристального взгляда на переменные я вижу, что cell
существует, но все подзаголовки, которые он имеет в файл интерфейса (который связан) - включая textField
- - nil
. В указанной строке я получаю следующий журнал сбоев:
-[UITableViewWrapperView textField]: unrecognized selector sent to instance 0x12c651430
Я изучил это дальше, и я нашел это:
Изменение оператора else
идентично предыдущей строке избавляет от сбоя, и приложение работает нормально (используя sender.superview.superview
, как в iOS 6).
Это не имеет никакого смысла для меня. Apple вернула иерархию UITableViewCell
к иерархии iOS 6, или я что-то упустил? Спасибо!