Установка выбора UIPickerView для UITextField внутри UITableViewCell - PullRequest
0 голосов
/ 18 мая 2011

У меня есть UITextField в пользовательской ячейке таблицы. При нажатии на область текстового поля я отображаю всплывающее окно, которое содержит представление выбора. Мне нужно установить выделение из окна выбора в текстовое поле. Я показываю поповер из метода textDidBeginEditing. Как передать выбор из метода didSelect средства выбора в текстовое поле?

По замыслу все это находится в TableViewController с реализованными методами делегата textfield и pickerview.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 18 мая 2011

Просто установите делегат UIPickerView в качестве контроллера представления, который имеет ваш UITableView. Таким образом, в didSelect UIPickerView (реализованного в viewcontroller представления таблицы) вы просто используете источник данных представления выбора для заполнения текстового поля.

Чтобы получить пользовательскую ячейку из таблицы, просто выполните:

CustomTableViewCell *thisCell = (CustomTableViewCell*)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:section]];

Затем вы устанавливаете текстовое поле таким образом, чтобы иметь любой текст, который вы хотите:

thisCell.textField.text = @"text";
0 голосов
/ 18 мая 2011

Я считаю, что лучший подход - установить для свойства inputView UITextField значение UIPickerView. Это представление будет отображаться вместо клавиатуры .

Когда UITableViewCell прокручивается за пределы таблицы, он может быть освобожден. Следовательно, сохранение ссылки на UITextField, который вызвал его метод делегата textFieldDidBeginEditing:, может привести к исключению EXC_BAD_ACCESS.

Решение состоит в том, чтобы изменить модель ячейки , которая хранится в массиве контроллером представления. Когда ячейка инициализируется, она должна установить значение текстового поля в соответствующее значение в своем объекте модели. Наконец, ячейка должна наблюдать изменения своей модели через KVO и соответствующим образом обновлять значение текстового поля.

0 голосов
/ 18 мая 2011

Можете ли вы предоставить немного больше информации?Как выглядит tableView:cellForRowAtIndexPath:?Мне любопытно, где доступен объект, который вы редактируете.

Есть пара подходов, о которых я могу подумать ...

  1. Установить тег на textField (s)и использовать его для поиска конкретного редактируемого textField
  2. Установить делегат для pickerView в tableCell и обработать текстовое изменение
...