Проблема чтения последнего значения из UITextField перед закрытием представления - PullRequest
1 голос
/ 20 марта 2011

У меня есть вид, который я отображаю модально, чтобы получить информацию для входа в систему от пользователя.У меня есть следующие настройки:

  • Контроллер представления является UITableViewController
  • В таблице есть три ячейки: поля имени пользователя и пароля (оба типа UITextField в пределах UITableViewCell) и одну простую ячейку в качестве кнопки входа в систему.
  • Значения считываются из UITextField в textFieldDidEndEditing: сообщении
  • Текстовые поля идентифицируются различными значениями тега.

Проблема

Моя проблема в том, что когда фокус находится на UITextField и пользователь касается кнопки входа, соответствующее сообщение UITextField textFieldDidEndEditing: отправляется после didSelectRowAtIndexPath:.Теперь проблема заключается в том, что я отправляю сообщение с новыми учетными данными пользователя на мой LoginViewControllerDelegate в didSelectRowAtIndexPath:, и в это время значение текстового поля еще не читается.

Некоторые идеи

У меня есть несколько идей, как это исправить, но у меня есть сложности с каждым из них.

Во-первых, я могу закрыть представление входа в систему, и делегат получает уведомление во время закрытия,но я хочу дать делегату (тому, кто владеет этим представлением входа в систему) полный контроль, и я думаю, что делегату следует закрыть представление входа в систему при успешном входе в систему (представление входа в систему считывает только учетные данные, делегат проверяет их).

Во-вторых, я мог бы также прочитать имя пользователя или пароль непосредственно перед вызовом делегата, но тогда мне пришлось бы искать текстовые поля.Если виды не видны, я думаю, что неправильно предполагать, что клетки существуют.Это просто большая проблема, но я не хочу делать это правильно.Было бы нормально сохранить UITextField с?Таким образом, однако, я не могу использовать какую-то пользовательскую ячейку, которая сама предоставила бы текстовое поле.

В основном я хочу следующее:

  1. Обнаружена потребность в (действительных) учетных данных пользователя, открывается окно входа в систему
  2. Пользователь вводит имя пользователя и пароль и вызывает готово.
  3. Делегат проверяет эти учетные данные.Если они не работают, отображается сообщение и повторите шаг 2.
  4. Учетные данные в порядке, поэтому закройте окно входа в систему и продолжайте.

Ответы [ 3 ]

1 голос
/ 20 марта 2011

После всех уловок я наконец-то понял, что просто отставка первого респондента перед вызовом делегата исправила это.В контроллере табличного представления мне просто нужно было добавить вызов:

    [[self.view findFirstResonder] resignFirstResponder];

findFirstResonder относится к категории и может быть найден здесь .

0 голосов
/ 21 марта 2011

Вы можете использовать простой вид с двумя текстовыми полями и одним UIButton.После нажатия кнопки вы можете просто удалить вид из суперпредставления на [yourView removeFromSuperview].Вы можете получить данные из yourTextfield.text.

Я думаю, это должно сработать

0 голосов
/ 20 марта 2011

Попробуйте вместо использования третьей ячейки в качестве кнопки входа в систему. Используйте простую кнопку при входе в систему. На IBAction этой кнопки вы можете проверить ввод пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...