Я потратил несколько часов, пытаясь решить одну очень странную проблему, но я действительно не знаю, как это сделать.cellForRowAtIndexPath возвращает nil на устройстве
У меня есть сгруппированный UITableView, на который ссылается XIB, заполненный пользовательскими (подклассами) ячейками UITableViewCell. Все клетки (две секции с одной ячейкой каждого) открыты, и я стараюсь, чтобы получить один из них по телефону:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:1];
LocationSearchFilterCell *cell = (LocationSearchFilterCell *)[filterTable cellForRowAtIndexPath:indexPath];
На Simulator 4.2 клетка возвращается должным образом;
На устройстве 4.0.x код возвращает NIL;
В Simulator 4.0.x код возвращает NIL;
На тренажере 4.1 ячейка возвращается правильно НО НЕ на устройстве 4.1.
Самое странное, что я использую этот подход в нескольких других местах приложения, и ячейка всегда возвращается должным образом. Я думаю, что это какая-то странная комбинация, когда я делаю что-то по-другому в сочетании с некоторой ошибкой iOS.
Любая идея?
P.S. В ситуации, когда NIL возвращается, с помощью GDB я получаю указатель ячейки при его создании и называют:
(gdb) po (void *)[filterTable indexPathForCell:(UITableViewCell *)0x7b08520]
и я получаю правильный путь индекса (который соответствует одному я обеспечиваю), что означает, ячейка действительна и присутствует в представлении таблицы.
Я даже пробовал передать объект, возвращенный этим последним вызовом (по указателю), и я все равно получаю NIL.
В какой метод вы пытаетесь получить ячейку? – Rits
Пользовательский метод, который вызывается нажатием кнопки. – pmilosev
попытайтесь проверить, действительно ли возвращаемый объект имеет тип LocationSearchFilterCell: ([cell isKindOfClass: [LocationSearchFilterCell class]]) – Felix