Get Values form text Fields in UITableView Custom Cell
Asked Answered
E

3

10

I have Created a custom UITableViewCell, the cell has multiple text fields, now i want to access the strings or data in these UITextFields. I know i can get the cell on didSelectRowAtIndexPath, but i need to get the text on a "Save" method.

Explain answered 26/7, 2012 at 9:43 Comment(1)
i'm facing same problem in my code dropbox.com/s/lowbgnqzk05ej8d/Alert.zipNeglect
T
30

Suppose you have four text fields with tags 100 and so on to 104. You will you Counter that shows how many cells you have in tableview.

         

for (int i=0; iLessThanCounter; i++) {
            
     NSIndexPath *indexPath = [NSIndexPath indexPathForRow: i inSection: 0];
                
     UITableViewCell *cell = [mytableview cellForRowAtIndexPath:indexPath];
                
     for (UIView *view in  cell.contentView.subviews){                
                    
           if ([view isKindOfClass:[UITextField class]]){
                        
                  UITextField* txtField = (UITextField *)view;
                        
                  if (txtField.tag == 100) {
                         NSLog(@"TextField.tag:%u and Data %@", txtField.tag, txtField.text);
                  }
                  if (txtField.tag == 101) {
                        NSLog(@"TextField.tag:%u and Data %@", txtField.tag, txtField.text);
                  }
                  if (txtField.tag == 102) {
                        NSLog(@"TextField.tag:%u and Data %@", txtField.tag, txtField.text);
                  }
                  if (txtField.tag == 103) {
                       NSLog(@"TextField.tag:%u and Data %@", txtField.tag, txtField.text);
                  }
                  if (txtField.tag == 104) {
                       NSLog(@"TextField.tag:%u and Data %@", txtField.tag, txtField.text);

                  } // End of isKindofClass 
              } // End of Cell Sub View
         }// Counter Loop
    }
Tot answered 26/7, 2012 at 9:56 Comment(5)
This way will solve the purpose. But best way is to do it through delegates.Jurisdiction
If you do have large number of views inside the cell this code will be ambiguous. You are conterminously checking tag on if conditions, even you are not using else if or the best tool for this scenario switch statement. And if you directly get the view for a specific tag then why do you iterate with a loop?Westleigh
@Jurisdiction help me i have faced same problem dropbox.com/s/lowbgnqzk05ej8d/Alert.zipNeglect
help me i have same logicNeglect
perfect only for the visible cells in the tableview...but one cannot get data for the cells scrolled up.Abohm
W
9

You can simply use viewWithTag to get your desired views. Suppose you have one imageview with tag 100 and one text view with tag 200.

UITableViewCell *cell = [mytableview cellForRowAtIndexPath:indexPath];

UIImageView *getImageView = (UIImageView*)[cell.contentView viewWithTag:100];
UITextField *getTextView = (UITextField*)[cell.contentView viewWithTag:200];
Westleigh answered 27/7, 2012 at 8:59 Comment(0)
T
1

you need to create instance for each textField in your header file. Look at this sample demo

http://windrealm.org/tutorials/uitableview_uitextfield_form.php

You can access textfield's text property for getting the text value for a particular textfield

Takara answered 26/7, 2012 at 9:51 Comment(3)
I have multiple textFields in a cell, & there are also multiple cells,Explain
so you can keep references for all of themTakara
one more solution is above solution from Muhammad Junaid Sidhu which might do the workTakara

© 2022 - 2024 — McMap. All rights reserved.