iPhone Table View: как получить доступ к текстовому полю пользовательского TableViewCell - PullRequest
7 голосов
/ 07 июня 2009

Я настроил UITableView с несколькими пользовательскими UITableViewCell, которые имеют некоторые UITextField и UISwitch (на основе Settings.app). У меня такой вопрос: когда пользователь нажимает кнопку «Сохранить» на панели навигации, какой самый лучший способ доступа к этим текстовым полям и переключения элементов управления для сохранения их значений?

Ответы [ 3 ]

15 голосов
/ 07 июня 2009

Я предлагаю не использовать пользовательские UITableViewCell s. Раньше я делал это по-своему, но есть гораздо лучший способ. Используйте свойство accessoryView UITableViewCell, которому вы можете назначить произвольное представление, например UITextField или UISwitch. Он отображается точно так же, как в приложении «Настройки».

Затем, когда вам нужно получить к нему доступ, просто используйте

NSString *text = ((UITextField *)cell.accessoryView).text;

Однако вы должны быть осторожны при настройке ячеек и доступе к их значениям. Если какая-либо ячейка выйдет за пределы экрана, она будет удалена, и вы не сможете получить доступ к текстовому полю. То, что вы хотите сделать при настройке вашей ячейки:

cell.accessoryView = nil;  //Make sure any old accessory view isn't there.
if (/*cell needs text field*/) {
    UITextField *textField = [[[UITextField alloc] initWithFrame:frame] autorelease];
    textField.text = savedValue;
    cell.accessoryView = textField;
    [textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventValueChanged];
}

...

- (void) textChanged:(UITextField *)source {
    self.savedValue = source.text;
}
0 голосов
/ 08 июня 2009

Вы также можете настроить свои пользовательские ячейки на ссылку на высокоуровневый контроллер представления и отправлять ему уведомления, когда пользователь обновляет значения в них. По сути, скопируйте шаблон делегата, используемый многими объектами библиотеки в UIKit.

0 голосов
/ 08 июня 2009

Если вы не следуете совету Эда, вам лучше всего сохранить текстовое представление в пользовательской ячейке и добавить свойство для доступа к представлению.

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