Я создаю форму поиска с несколькими свободными текстовыми полями, которые я хотел бы, чтобы пользователь редактировал в строке на табличном виде (а не переходил к отдельному представлению для каждого отдельного элемента). Пока у меня так получается, когда при нажатии на поле появляется диалоговое окно ввода текста, вот соответствующий код:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 130, 25)];
label.textAlignment = UITextAlignmentRight;
label.tag = kLabelTag;
[cell.contentView addSubview:label];
[label release];
UITextField *theTextField = [[UITextField alloc] initWithFrame:CGRectMake(150, 10, 140, 25)];
theTextField.tag = kTextFieldTag;
theTextField.delegate = self;
[cell.contentView addSubview:theTextField];
[theTextField release];
Это дает желаемый эффект, позволяя пользователю нажать на строку и получить диалоговое окно редактирования, но у меня есть несколько проблем:
1) Вы можете видеть, что я установил делегат текстового поля равным себе. Класс, в котором это выполняется, реализует UITextFieldDelegate, но textFieldShouldEndEditing
не запускается.
2) Как я могу реально сохранить то, что пользователь помещает в память. Другими словами, возможно ли узнать, какое текстовое поле выбрал пользователь в настоящее время, чтобы я мог перейти [myArray getObjectAtIndex:blah]
и редактировать фактические данные.
Спасибо