À l'origine, j'ai fait une application avec 5 tablesviewcells où chaque cellule avait sa propre image et une fois que la cellule avait un champ uitext déposé dans lequel contenait le texte de l'espace réservé. Quand cette cellule était tapée, elle appelait un uipicker et renvoyait la valeur au champ uitext. Je n'utilisais pas la méthode cellForRowAtIndexPath.Comment remplacer un UITextField du storyboard par un programme?
J'ai dû refaire les images vues de la cellule par programme parce que je devais utiliser un nouveau comportement lorsque les cellules étaient tapées. J'ai donc dû implémenter cellForRowAtIndexPath avec un commutateur pour peupler chaque cellule. J'ai fini les cellules avec les UIImageViews mais je suis tombé sur la cellule contenant l'UITextField.
Le champ uitext créé par programmation n'apparaît pas. Voici le code:
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease];
switch (indexPath.row) {
case 0:
cell.imageView.image = [UIImage imageNamed:@"Location1.jpg"];
break;
case 1:
break;
case 2:
self.myCity = [[UITextField alloc] initWithFrame:CGRectMake(200,6,100,30)];
self.myCity.text = @"Pick a city...";
//Call UIPicker
break;
case 3:
cell.imageView.image = [UIImage imageNamed:@"driveThru1.jpg"];
break;
case 4:
cell.imageView.image = [UIImage imageNamed:@"24hrs1.jpg"];
break;
case 5:
break;
default:
break;
}
return cell;
}
Voici le story-board:
Voici le résultat:
Mais ce sont 5 cellules statiques. Je pensais que reuseIdentifiers étaient pour les cellules prototypes dynamiques? – marciokoko
Les identifiants de réutilisation sont utilisés pour identifier les cellules pour le processus de suppression de file d'attente, ce qui dans votre cas, vous ne l'implémentez pas actuellement. Votre code utilise initWithStyle pour créer une nouvelle cellule sur chaque chargement. Encore une fois, la raison pour laquelle votre champ de texte n'apparaît pas est que vous ne l'ajoutez pas à la sous-vue de la cellule. Essayez [cellule addSubview: self.myCity]; – JonahGabriel