2008-09-25 20 views
9

Je suis très tôt dans le processus d'apprentissage du développement de l'iPhone. J'essaie de comprendre différentes choses. En ce moment je viens de prendre le modèle de base de NavigationController et j'essaye de créer une vue de tableau groupée simple avec quelques champs de texte. Ce que je ne peux pas sembler faire est d'obtenir Interface Builder pour me permettre de déposer un UITableViewCell dans un UITableView de sorte que je puisse alors ajouter un champ de texte à la Cellule. Est-ce même possible (il semblerait que son supposé être donné le fait que UITableViewCell est un contrôle draggable)? Si ce n'est pas le cas, cela signifie-t-il que tout ce que je vais faire est que je devrais écrire moi-même?Utilisation d'Interface Builder pour UITableViews

Répondre

17

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 votre vue tableView: cellForRowAtIndexPath:.

Assurez-vous de donner à la cellule un identifiant dans Interface Builder, puis utiliser le même identifiant avec dequeueReusableCellWithIdentifier: (voir l'exemple de code pour la façon dont cela fonctionne - l'idée est que les cellules se réutilisés - la Le système d'exploitation n'allouera que le nombre de cellules disponibles sur l'écran en une seule fois, ce qui permet d'économiser de la mémoire.)

1

Malheureusement, cela ne fonctionne pas vraiment de cette façon - les cellules de la vue de table sont générées par le délégué lors de l'exécution. Il s'avère que le code est très simple, cependant. Jetez un coup d'œil sur le code de l'exemple de tableview, c'est assez facile à suivre.

6

Soyez prudent avec la méthode Boot To The Head. Vous fuire si vous ne traitez pas correctement votre IBOutlets. Je vais essayer d'expliquer cela au mieux de ma capacité sans afficher de code (NDA). Si vous envisagez d'utiliser IB pour créer votre cellule, créez le fichier Xib de UITableViewCell. Définissez le propriétaire du fichier comme votre sous-classe UIViewController (ou UITableController). Appelez le IBOutlet quelque chose comme UITableViewCell *cellFactory. Dans la méthode UITableViewDataSourcetableView:cellForRowAtIndexPath: faire le pseudo-code suivant;

  1. Essayez de DEQUEUE une cellule en utilisant l'identifiant que vous configurez dans IB
  2. En cas de succès, votre fait. Utilisez simplement la cellule
  3. Sinon, vous devez créer une nouvelle cellule. Utilisez la méthode [NSBundle mainBundle] loadNibNamed:owner:options: avec votre fichier xib approprié là-dedans. Cela remplira le cellFactory ivar avec une nouvelle cellule. Voici la partie délicate.
  4. réglez cell = cellFactory puis relâchez cellFactory et réglez-le à zéro pour être sûr de ne pas l'utiliser accidentellement à nouveau. Vous êtes maintenant sûr à utiliser votre portable comme d'habitude