31 votes

Pouvez-vous ajouter un UITableViewController de la TableView un autre point de Vue?

J'ai inséré un UITableViewController et ses UITableView en un simple IB document. L'objectif est d'inclure la UITableView à l'intérieur d'un parent UIWindow (ou UIView) avec d'autres "trucs" (rien) qui ornent la table. Voici à quoi pourrait ressembler dans Interface Builder.

enter image description here

J'ai essayé de nombreuses fois et toujours à la même place.

  1. Construire un sous-groupe de UITableViewController rempli avec des données
  2. Personnaliser le UTableView et ce sont des cellules dont appuyez sur les cibles
  3. Ajouter le nouvellement créé UITableViewController dans un document de l'IB
  4. Faites glisser la UITableView de la UITableViewController et dans les principaux UIView
  5. Fil de la UITableViewController à la UITableView
  6. Remarque: l'ajout de la UITableViewController dans le code des résultats dans le même problème

Lors de l'exécution de l'application dans l'émulateur iPhone ou sur un appareil de la table s'affiche correctement, mais se bloque la première fois que vous essayez d'interagir avec elle. Un parchemin, un robinet, quelque chose bloque l'application. Cela semble être un délégué de problème, comme la UITableView ne sait pas comment communiquer avec le UITableViewController, mais je n'ai aucune idée de comment corriger le problème.

Jusqu'à présent j'ai été capable de s'en sortir par la personnalisation de la tableHeaderView pour obtenir des mises en page qui suffisent, mais je préfère vraiment le travail de la technique.

32voto

Reed Olsen Points 5214

Vous êtes sur la bonne voie! Voici ce que vous devez faire:

  1. Créer une norme sous-classe UIViewController avec son cortège de vue xib.

  2. Ajouter un UITableView dans le XIB.

  3. Fil de tout ce. La vue contrôleur sera le délégué et la source de données pour votre table, vous devez mettre en œuvre des deux protocoles.

  4. Dans votre fichier de mise en oeuvre, ajouter tout le nécessaire de la source de données et de déléguer les méthodes nécessaires à la tableview:

    (UITableViewCell *)tableView:(UITableView *)tv
        cellForRowAtIndexPath:(NSIndexPath *)indexPath
    

Votre fichier d'en-tête peut ressembler à quelque chose comme ceci:

MyViewController.h

@interface MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
    IBOutlet UITableView *myTableView;
    //This outlet is only necessary if you need to send messages to the table view (such as reloadData)
}
@end

Cela devrait le faire!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X