У меня есть вопрос относительно подходящего вида.Как разрешить пользователю изменять текст в ячейках UITableView
Я реализую приложение, похожее на приложение адресной книги. Я могу представить представление таблицы в режиме редактирования. Я хочу, чтобы пользователь мог редактировать текст в ячейках в режиме редактирования. Я знаю, что для редактирования текста в ячейках мне нужно текстовое поле. Я создал текстовое поле.
Мой вопрос:
, что я должен сделать для того, чтобы представить, что текстовое поле в клетках.
Какие методы мне нужно реализовать, чтобы представить это текстовое поле в представлении таблицы в режиме редактирования.
Как только я закончил с редактированием, как я могу обновить данные, которые находятся в контроллере представления контактов (содержит все контакты). Сохранение должно сохраняться в адресной книге. По этому вопросу я знаю, что мне нужно реализовать некоторый метод делегата, но я не уверен, как это сделать.
Пожалуйста, взгляните на следующий код, чтобы иметь представление о моей проблеме.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
[tableView setSeparatorColor:[UIColor clearColor]];
//[self.tableView setEditing: YES animated: YES];
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
if(isEditingOn) {
if(cell == nil)
cell = [self getCellContentView:CellIdentifier];
UILabel *lblTemp1 = (UILabel *)[cell viewWithTag:1];
UITextField *textfield1=(UITextField*)[cell viewWithTag:2];
if(indexPath.row == 0) {
lblTemp1.text = @"Name";
textfield1.text = myContact.name;
}
else if(indexPath.row == 1) {
lblTemp1.text = @"Phone";
textfield1.text = myContact.phone;
}
else if(indexPath.row == 2) {
lblTemp1.text = @"Email";
textfield1.text = myContact.email;
}
}
else {
if(indexPath.row == 0) {
cell.textLabel.text = myContact.name;
}
else if(indexPath.row == 1) {
cell.textLabel.text = myContact.phone;
}
else if(indexPath.row == 2) {
cell.textLabel.text = myContact.email;
}
}
return cell;
}
- (UITableViewCell *) getCellContentView:(NSString *)cellIdentifier {
CGRect CellFrame = CGRectMake(0, 0, 60, 20);
CGRect Label1Frame = CGRectMake(10, 10, 180, 25);
UILabel *lblTemp;
UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:CellFrame reuseIdentifier:cellIdentifier] autorelease];
lblTemp = [[UILabel alloc] initWithFrame:Label1Frame];
lblTemp.tag = 1;
[cell.contentView addSubview:lblTemp];
[lblTemp release];
CGRect TextFieldFrame=CGRectMake(240, 10, 60, 25);
UITextField *textfield;
textfield=[[UITextField alloc]initWithFrame:TextFieldFrame];
textfield.tag=2;
textfield.placeholder = @"";
[cell.contentView addSubview:textfield];
}
В Xcode 4 вы можете использовать статическую конфигурацию ячейки таблицы и связать текстовые поля как IBOutlets. Почти нулевой код. – cocoafan