Как определить, какой заголовок раздела в UITableView редактируется - PullRequest
0 голосов
/ 03 марта 2012

У меня есть UITextField в пользовательском заголовке раздела. Есть несколько разделов, использующих этот стиль заголовка, и, следовательно, несколько UITextFields.

Я реализовал UITextFieldDelegate. Когда я редактирую одно из этих UITextFields, он вызывает метод делегата textFieldDidEndEditing. Как определить, в каком заголовке раздела был этот UITextField? Мне нужно сохранить значение в основных данных в соответствующем NSManagedObject для этого раздела.

Большое спасибо заранее

РЕДАКТИРОВАТЬ: Некоторые люди предложили использовать тег номера раздела при создании ячейки, который будет работать идеально. Тем не менее, я уже назначил UITextField тег, чтобы отличить его как текстовое поле заголовка, а не текстовое поле ячейки или текстовое поле нижнего колонтитула. В этой таблице есть целые лотовые текстовые поля !!

Дальнейшее редактирование: было предложено использовать в indexPath. Это было бы моим предпочтительным решением, если бы я мог заставить его работать. Кто-нибудь знает, есть ли в верхних и нижних колонтитулах indexPaths?

Ответы [ 4 ]

1 голос
/ 03 марта 2012

Вы можете использовать теги для идентификации UITextField экземпляров.Поскольку вы уже устанавливаете теги в экземплярах UITextField, установите теги для самих представлений раздела:

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
  UIView *sectionView = ... // your section view instance

  // assign the section index as the tag
  sectionView.tag = section; 

  return sectionView;
}

В делегате текстового поля получите индекс раздела от родителя отправителя:

- (void) textFieldDidEndEditing:(UITextField *)textField; 
{
  NSInteger theSectionIndex = textField.superview.tag;
  // your custom logic here
}
0 голосов
/ 03 марта 2012

Это очень просто мистер Бен Томпсон.Вы назвали разные между UITextFields, я прав?Просто найдите конкретное UITextField, используя его имя.

-(void) textFieldDidEndEditing:(UITextField *)textField
{
    if (textField == textfieldOne) 
    {
        //Do whatever you want...
    }
    else if (textField == textfieldTwo)
    {
        //Do whatever you want...
    }
    else if (textField == textfieldThree)
    {
        //Do whatever you want...
    }
}

Надеюсь, это вам немного поможет.Спасибо.

0 голосов
/ 03 марта 2012

Я полагаю, что вы добавляете поле в качестве пользовательского представления к заголовку в viewForHeader методе tableview.

Я предлагаю сохранить тег поля, используя следующий раздел.

textfield.tag == section;

тогда в сообщении делегата у вас может быть метод switch для сравнения тегов .. и сделать свой собственный код там

0 голосов
/ 03 марта 2012

Возможно, вы захотите взглянуть на метод UITableView indexPathForCell :.

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

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