2010-09-06 8 views
4

Les gars de G'day, je construis une application qui permet aux utilisateurs d'entrer rapidement des nombres dans un UITableView.UITextField Delegate dans UITableView

J'ai actuellement construit le cadre, mais j'ai un peu d'accrochage de la vue pour charger le clavier et rendre le texte de la cellule modifiable à partir d'une action de l'utilisateur. Je me souviens qu'il y avait un exemple iOS dans le code de développement quelque part, (comme il y a un an donc il ne serait pas sous NDA) où vous avez ajouté et édité des éléments dans le contexte du UITableView sans aller à un détail sous-vue

Juste besoin d'un indice sur la façon de brancher les délégués, ou comment structurer le code.

Répondre

13

J'ai le code où je crée des cellules personnalisées pour un UITableView qui ont des contrôles UITextField et UITextView sur eux. Dans le code UITableViewController Je fais ceci:

Interface

@interface MyTableViewController: 
    UITableViewController <UITextFieldDelegate, UITextViewDelegate> { 
.... 
} 

mise en œuvre

-(UITableViewCell *) tableView:(UItableView *) tableView 
    cellForRowAtIndexPath: (NSIndexPath *) indexPath { 

    .... 

    UITableViewCell * cell = .... 
    cell.myTextField.delegate = self; 
    cell.myTextField.tag = 1; //This should be unique. 
    return cell; 
} 

-(void) textFieldDidEndEditing: (UITextField *) textField { 
    // Decide which text field based on it's tag and save data to the model. 
} 

-(void) textViewDidEndEditing: (UITextView *) textView { 
    // Decide which text view based on it's tag and save data to the model. 
} 
+0

HTTMFY. Bon produit. – user

+0

Vous êtes un SAUVEUR ...;) –

+0

Juste une note les gars, tout routage à travers le contrôleur comme ceci est l'approche simple, mais pas vraiment une bonne idée pour quoi que ce soit, sauf une simple application. Vous devriez également vous pencher sur des choses comme les architectures UITableViewCells et MVVM personnalisées. – drekka

0

Vous pouvez ajouter un objet UITextField ou UITextView à n'importe quelle cellule. Si vous avez des cellules personnalisées, faites en un délégué pour leur affichage de texte, ou si vous composez les cellules dans votre délégué tableau, faites-en les délégués des champs de texte.