2012-07-26 16 views
10

Ho creato un numero personalizzato UITableViewCell, la cella ha più campi di testo, ora voglio accedere alle stringhe o ai dati in questi UITextFields. So che posso ottenere la cella su didSelectRowAtIndexPath, ma ho bisogno di ottenere il testo su un metodo "Salva".Ottieni valori modulo testo Campi in UITableView Cella personalizzata

+0

sto affrontando lo stesso problema nel mio codice https://www.dropbox.com/s/lowbgnqzk05ej8d/Alert.zip – Siva

risposta

29

si supponga di avere quattro campi di testo con tag 100 e così via per 104. Si vuoi Counter che mostra quante celle hai 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 
    } 
+2

In questo modo risolverà lo scopo. Ma il modo migliore è farlo attraverso i delegati. – manileo86

+0

Se si dispone di un numero elevato di viste all'interno della cella, questo codice sarà ambiguo. Stai controllando con attenzione il tag su 'if conditions', anche se non stai usando' else if' o lo strumento migliore per questo scenario 'switch statement'. E se ottieni direttamente la vista per un tag specifico, allora perché continui con un ciclo? –

+0

stesso problema @ manileo86 mi aiutano ho affrontato https://www.dropbox.com/s/lowbgnqzk05ej8d/Alert.zip – Siva

1

è necessario creare un'istanza per ogni campo di testo nel file di intestazione. Guardate questo campione demo

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

È possibile accedere a proprietà di testo del campo di testo per ottenere il valore di testo per un particolare campo di testo

+0

I avere più campi di testo in una cella, e ci sono anche più celle, – Zubair

+0

in modo da poter mantenere i riferimenti per tutti loro –

+0

un'altra soluzione è sopra la soluzione di Muhammad Junaid Sidhu che potrebbe fare il lavoro –

9

Si può semplicemente utilizzare viewWithTag per ottenere le vostre opinioni desiderati. Supponiamo di avere un imageview con tag 100 e un punto di vista del testo con tag 200.

UITableViewCell *cell = [mytableview cellForRowAtIndexPath:indexPath]; 

UIImageView *getImageView = (UIImageView*)[cell.contentView viewWithTag:100]; 
UITextField *getTextView = (UITextField*)[cell.contentView viewWithTag:200]; 
+0

ho provato questo, ma non funziona ... – Siva

Problemi correlati