UITableView сообщает UITableViewCell о перезагрузке

Вот краткое описание ситуации:

У меня есть TableViewController с несколькими ячейками. В одной из ячеек у меня есть UITextField. Эта ячейка относится к пользовательскому классу UITableViewCell. Этот класс реализует протокол UITextFieldDelegate и метод textFieldDidEndEditing: В методе textFieldDidEndEditing: я сохраняю значение TextField в CoreData.

Все это отлично работает.

Мой вопрос касается перезагрузки TableView:

После определенных действий пользователя я перезагружаю данные UITableView, вызывая [self.tableView reloadData] Если, когда я вызываю этот метод, вышеупомянутый TextField является первым ответчиком, будет вызван метод textFieldDidEndEditing:, вызывая выполнение моего кода, связанного с CoreData.

Когда TableView перезагружается, я не хочу, чтобы пользовательский TabelViewCell вообще что-либо делал. Есть ли способ, чтобы TableViewCell мог знать о перезагрузке TableView? Так что я могу проверить это в методе textFieldDidEndEditing:?

Тем временем я решил это следующим образом:

Когда создается этот TableViewCell, я позволяю ViewController хранить ссылку на него. Перед вызовом [self.tableView reloadData] я сначала информирую Cell, устанавливая пользовательское свойство _cell.tableWillReload = YES Я проверю это свойство в методе textFieldDidEndEditing:.

Я подумал, может быть, есть другой, более стандартный способ, чтобы TableViewCells знал, что они окружают TableView, перезагружается?


person Brabbeldas    schedule 21.12.2012    source источник


Ответы (1)


Попробуй это :-

[yourTextFieldOfCell resignFirstResponder];

до звонка [self.tableView reloadData];

person funmania    schedule 21.12.2012
comment
Спасибо за ваш комментарий. Вызов resignFirstResponder приводит к вызову textFieldDidEndEditing. Результат все тот же. Я не хочу, чтобы код в textFieldDidEndEditing выполнялся. - person Brabbeldas; 21.12.2012