Получить значения текстовых полей в динамическом табличном представлении

У меня есть динамическое табличное представление, которое имеет 5 ячеек-прототипов, внутри каждой ячейки у меня есть 6 текстовых полей. Я отмечаю текстовые поля, но у меня возникают проблемы с пониманием, как я могу получить значения из всех них в "textFieldDidEndEditing". В моем коде у меня есть это:

-(void) textFieldDidEndEditing:(UITextField *)textField
{
NSMutableArray *cellOneContentSave = [[NSMutableArray alloc] init];
NSString *cellOneTexfieldOneTxt;
if (textField == [self.view viewWithTag:1503])
{
cellOneTexfield1Txt = textField.text;
[cellOneContentSave addObject:cellOneTexfieldOneTxt];  
}

Проблема 1: НО! это только дает мне значение из одного текстового поля в первой ячейке... Должен ли я использовать переключатель для каждой ячейки и текстового поля?.

Проблема 2: Я сказал, что это динамическое представление таблицы, поэтому пользователь может вставлять строки новостей (для каждого раздела), нажимая зеленую кнопку +, которая появляется с левой стороны, когда он вводит стиль редактирования коммита... и когда он входит, должен ли теги полей newtex имеют разные теги? С одной стороны, я думаю, что нет, потому что это новые текстовые поля, НО другие indepaxth.row.... но с другой стороны, я не знаю, требует ли контроллер новых тэгов...

1 ответ

Решение
-(void) textFieldDidEndEditing:(UITextField *)textField
{
    // assuming your text field is embedded directly into the table view
    // cell and not into any other subview of the table cell
    UITableViewCell * parentView = (UITableViewCell *)[textField superview];

    if(parentView)
    {
        NSMutableArray *cellOneContentSave = [[NSMutableArray alloc] init];
        NSString *cellOneTexfieldOneTxt;

        NSArray * allSubviews = [parentView subviews];
        for(UIView * oneSubview in allSubviews)
        {
            // get only the text fields
            if([oneSubview isKindOfClass: [UITextField class]])
            {
                UITextField * oneTextField = (UITextField *) oneSubview;

                if(oneTextField.text)
                {
                    [cellOneContentSave addObject: oneTextField.text];
                } else {
                    // if nothing is in the text field, should
                    // we simply add the empty string to the array?
                    [cellOneContentSave addObject: @""];
                }
            }
        }
    }

    // don't forget to actually *DO* something with your mutable array
    // (and release it, in case you're not using ARC), before this method
    // returns.
}
Другие вопросы по тегам