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
Répondre
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.
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
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. –
Fair points et d'accord avec vous :) – Rog
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;
}
+1 Belle implémentation de référence. (Peut-être un peu trop pour un débutant, mais quelque chose à viser.) –
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
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.) –