Question

Je suis très tôt dans le processus d'apprentissage du développement d'un iPhone. J'essaie de comprendre divers éléments. Pour le moment, je viens de prendre le modèle de base NavigationController et j'essaie de créer une vue tabulaire groupée simple avec quelques champs de texte. Ce que je ne peux pas sembler faire, c'est de demander à Interface Builder de me permettre de déposer un UITableViewCell dans un UITableView afin que je puisse ensuite ajouter un champ de texte à la cellule. Est-ce même possible (il semblerait que son supposé se voir attribuer le fait que UITableViewCell est un contrôle déplaçable)?

Si non, cela signifie-t-il que tout cela est du code qu'il me faudra simplement écrire moi-même?

Était-ce utile?

La solution

Vous pouvez créer la cellule avec Interface Builder, mais vous devez en faire un objet de niveau supérieur, plutôt qu'un enfant de la vue tabulaire. Vous pouvez ensuite renvoyer cette cellule dans la fonction tableView: cellForRowAtIndexPath: de votre contrôleur de vue.

Assurez-vous de donner à la cellule un identifiant dans Interface Builder, puis utilisez le même identifiant avec dequeueReusableCellWithIdentifier: (voir l'exemple de code correspondant à ce principe - l'idée est que les cellules sont réutilisées - le système d’exploitation n’allouera que le nombre de cellules qu’il lui faut sur l’écran à la fois. Une façon intelligente d’économiser de la mémoire.)

Autres conseils

Soyez prudent avec la méthode Boot To The Head. Vous fuirez si vous ne traitez pas correctement vos IBOutlets . Je vais essayer de l'expliquer au mieux de mes capacités sans afficher de code (NDA). Si vous envisagez d'utiliser IB pour créer votre cellule, définissez le UITableViewCell comme son propre fichier Xib. Définissez le propriétaire du fichier en tant que sous-classe UIViewController (ou UITableController ). Appelez IBOutlet quelque chose comme UITableViewCell * cellFactory . Dans la méthode UITableViewDataSource tableView: cellForRowAtIndexPath: , utilisez le pseudo-code suivant:

  1. Essayez de retirer de la file d'attente une cellule en utilisant l'identifiant que vous avez défini dans IB
  2. En cas de succès, vous avez terminé. Il suffit d'utiliser la cellule
  3. Sinon, vous devez créer une nouvelle cellule. Utilisez la méthode [NSBundle mainBundle] loadNibNamed: propriétaire: options: avec votre fichier xib approprié. Cela remplira l'ivar de cellFactory avec une nouvelle cellule. Voici la partie la plus délicate.
  4. définissez cell = cellFactory , puis relâchez cellFactory et définissez-le sur nil pour vous assurer de ne pas le réutiliser par inadvertance. Vous pouvez maintenant utiliser votre cellule en toute sécurité, comme d'habitude

Malheureusement, cela ne fonctionne pas vraiment de cette manière: les cellules de la vue tableau sont générées par le délégué au moment de l'exécution. Il s'avère cependant que le code est très simple. Découvrez l'exemple de code tableview, il est assez facile à suivre.

C’est un bon tutoriel sur l’utilisation du générateur d’UI pour UITableView

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top