Я предлагаю не использовать пользовательские 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;
}