в моем приложении у меня есть UITabeView
с UITextField
внутри каждой ячейки. Однако у меня возникли проблемы с реализацией кнопок «предыдущий / следующий», чтобы текстовое поле внутри предыдущего / следующего UITableViewCell
было первым респондентом.
Я разделил класс UITableViewCell
на подклассы, чтобы он вызывал определенный метод delegate
при нажатии кнопок prev./next и передавал саму ячейку в качестве параметра этого метода (чтобы я мог получить путь к ее индексу для вычисления, который путь индекса ячейки, текстовое поле которой нужно сделать первым респондентом)
В реализации метода делегата I:
- получить индексный путь ячейки, кнопка которой была нажата
- добавить или вычесть 1 из пути индекса этой ячейки (в зависимости от того, какая кнопка была нажата)
- получить ячейку, текстовое поле которой нужно сделать первым респондентом, используя метод
-cellForRowAtIndexPath:
в представлении таблицы - сделать текстовое поле первым респондентом
Проблема в том, что метод -cellForRowAtIndexPath:
возвращает ячейку, только если она видна. Поэтому, когда ячейка не видна, она вернет nil
, и вышеуказанный алгоритм не будет работать, а когда ячейка отображается на экране, он будет работать правильно.
Вот мой код для пред. при условии, что MUInfoMateriaTableViewCell
является моим подклассом UITableViewCell
и имеет свойство textField
, которое возвращает его текстовое поле:
- (void)prevButtonPressedInCell:(MUInfoMateriaTableViewCell *)cell
{
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
NSIndexPath *previousIndexPath = [NSIndexPath indexPathForRow:indexPath.row-1 inSection:indexPath.section];
MUInfoMateriaTableViewCell *newCell = (MUInfoMateriaTableViewCell *)[self.tableView cellForRowAtIndexPath:previousIndexPath];
[newCell.textField becomeFirstResponder];
}
Есть ли способ «получить» невидимую ячейку, чтобы я мог сделать ее текстовое поле первым респондентом? Или вы можете предложить мне другой алгоритм для решения этой проблемы?