2010-12-07 50 views
0

Je suis noob. J'ai besoin d'insérer UITextView dans UITableViewCell avec le redimensionnement dynamique et que je tapais directement dans la cellule. S'il te plaît, aide-moi à résoudre ce problème.UITextView dans UITableViewCell

+0

Vous devez marquer la réponse de Rog comme étant acceptée pour que cette question soit classée. (Vous et Rog recevront des points de réputation.) –

Répondre

0

Ce n'est pas comme cela que l'UITableView standard est conçu pour fonctionner. Il y a une manière définie d'ajouter/éditer/enlever des articles si c'est ce que vous essayez d'accomplir.

Je vous recommande d'avoir une bonne lecture du Table View Programming Guide for iOS (en particulier la section "Insérer et supprimer des lignes et des sections") car cela vous mettra sur la bonne voie.

Vous pouvez bien sûr créer une vue personnalisée, etc. Si vous vraiment voulez permettre aux utilisateurs de taper dans une cellule, mais comme un «noob» auto-confessé, je ne recommande pas de tenter cela jusqu'à ce que vous êtes plus confiant à l'approche ci-dessus, etc.

+1

Je ne serais pas nécessairement d'accord avec cela. Que faire si vous implémentez un formulaire pour les utilisateurs à taper? Une tableview avec UITextFields est certainement une bonne solution pour cela et en fait il est utilisé par Apple un peu (par exemple lorsque vous ajoutez un nouveau contact sur l'iPhone). – Rog

+0

Je pensais juste que pour un débutant apprendre à connaître la façon standard de faire les choses serait un bon point de départ avant de créer une vue personnalisée. –

+0

Fair points et d'accord avec vous :) – Rog

7

Vous devez sous-classe UITableViewCell avec un UITextField en elle:

@interface CustomCell : UITableViewCell { 
    UILabel *cellLabel; 
    UITextField *cellTextField; 
} 

@property (nonatomic, retain) UILabel *cellLabel; 
@property (nonatomic, retain) UITextField *cellTextField; 

@end 

Et puis mettre en œuvre:

@implementation CustomCell 
@synthesize cellLabel, cellTextField; 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 

     cellLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 
    ... // configure your label appearance here 

     cellTextField = [[UITextField alloc] initWithFrame:CGRectZero]; 
     ... // configure your textfield appearance here 

    } 

    return self; 
} 

Et enfin utiliser vos cellules personnalisées sur:

- (CustomCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 
    ... // configure your cell data source here 
    return cell; 
} 
+0

+1 Belle implémentation de référence. (Peut-être un peu trop pour un débutant, mais quelque chose à viser.) –

+1

Pas de soucis @Constantine. Si vous êtes satisfait de la réponse, veuillez répondre à la question, car cela aide à améliorer ma réputation et celle de la communauté. Merci! – Rog