2016-09-07 4 views
-2

Как получить данные ячейки динамической таблицы. Dynamic page У меня есть табличный вид, подобный этому. Все ячейки создаются динамически. Я хочу получить все текстовые данные (аромат и%) при нажатии кнопки отправки. Проблема заключалась в том, что я динамически создавал текст. Поэтому я не могу индивидуально идентифицировать текстовое поле. Как получить данные из динамического текстового поля?Как читать данные из динамической ячейки ios

+0

где вы создаете текстовое поле? в 'cellForRowAtIndexpath'? – Lion

+0

логика использования используется метод подачи делегата с использованием текстового объекта и строка сохранения после нажатия кнопки, которая используется. text filed method записать файл соты. –

+0

Показать свой код. Как вы динамически загружаете данные в таблицу. –

ответ

0

Вы можете установить tag на ваш textfield и по этому тегу вы можете получить к ним доступ.

Например,

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 30)]; 

textField.tag = 100; //set tag 

UITextField *textField1 = (UITextField*)[self.view viewWithTag:100]; //retreive by tag 

Так, как это вы можете управлять динамически из textfields.

Обновление:

затем установить две метки 100 и 101 соответственно. Теперь вы должны получили клетку первой и из этой ячейки вы можете получили ваш textfields так далее нажмите кнопки первым есть все ячейки, то вы можете получили textfield из этой клетки, как:

UITextField *textField = (UITextField*)[cell viewWithTag:100]; 

Итак, вы должны есть ячейки первыми в щелчке кнопки.

+1

В этой причине. все текстовые поля flavor получают тег как 100. Итак, как получить значение в функции submitbuttonPresed. –

+0

набор различных тегов для каждого текстового поля !!!!! вы можете установить 'indexPath.row' как тег также для уникальной идентификации! – Lion

+0

У вас есть четыре текстовых поля в одной ячейке или одно текстовое поле на одну ячейку? – Lion

0

Набор тегов для вашего UITextField в пользовательской ячейке

For eg. 

cell.lblFlavour.tag = indexPath.row; 
cell.lblPercent.tag = indexPath.row; 

Теперь, получить доступ к UITextField на основе вашего indexPath

0

Используйте tag свойство для идентификации каждого компонента UI однозначно. Назначьте то же самое свойство tag, где вы создаете textFields и button каждой строке, а затем после изменения tag значение для следующей строки и получите их с помощью кода.

Чтобы установить tag:

self.yourTextfield.tag = 100; 
self.yourbutton.tag = 100; 

// set action method to uibutton 
[cell.yourButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

Чтобы получить UI компоненты, используя tag свойства:

-(IBAction)buttonPressed:(id)sender{ 
    // here get all ui component using tag 
    UIButton *button = (UIButton *)sender; 
    NSLog(@"%d", [button tag]); 
} 

или вы можете использовать метод didSelectRowAtIndexPath, чтобы получить значения см код:

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath { 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    NSLog(@"getting index path %@",indexPath); 

    NSLog(@"getting index path %@",cell.yourTextField.text); 

} 
0

Основная идея UITableView - хранить данные в источник данных, а не в cell. Когда вы нажимаете кнопку «+» на панели навигации, вы должны добавить новый элемент в массив, а затем вызвать [tableView reloadData]. Таким образом, UITableView просто представляют данные из массива. И когда будет нажата кнопка отправки, вы просто перечисляете массив источника данных и получаете весь текст из каждой строки.

Когда вы нажимаете текст в текстовое поле внутри ячейки, вы можете использовать delegates или blocks для хранения данных в массиве.

0

попытка ниже код:

При нажатии на кнопку Submit

for (int i=0; i < [[tableView visibleCells] count]; i++) 
{ 
    //yourArrayname is the number of rows in the UITableView /Or UITableView visible cells 

      NSIndexPath *indexPath = [NSIndexPath indexPathForRow: i inSection: 0]; 

      CustomTableViewCell *cell = [tblExperience cellForRowAtIndexPath:indexPath]; 

        for (UIView *view in cell.contentView.subviews){ 

        if ([view isKindOfClass:[UITextField class]]){ 

        UITextField* CurrentTextField = (UITextField *)view; 
       NSLog(@"val %d %@",i,CurrentTextField.text); 

       [finalArray addObject:CurrentTextField.text]; 
       } 
    } 
    } 
+0

Я пробовал этот код. Но стек приложения в этом коде. Это занимает больше памяти и времени выполнения. –

0

Присвоить динамические теги на TextFields, реализовать делегаты TextField и сохранить данные в массиве, когда текстовое поле заканчивает редактирование. Что-то вроде этого

-(void)textFieldDidEndEditing:(UITextField *)textField { 
    [_array insertObject:textField.text atIndex:textField.tag]; 
} 
Смежные вопросы