2010-12-21 4 views
1

Il existe de nombreux messages indiquant qu'il faut éviter l'utilisation de UITableViewController. De plus en plus je veux céder, mais j'utilise une super classe CoreDataTableViewController qui est liée à l'ensemble de l'application, et je n'ai pas le temps de tout réécrire.UITableViewController ne défilera pas sur l'implémentation personnalisée

Bien sûr, la vue de UITableViewController ne devrait pas occuper l'intégralité de l'écran (projet iPad), je l'ai donc placée comme une sous-vue sur une instance régulière de UIView avec un cadre assez grand. C'est alors que des choses étranges commencent à se produire.

J'ai copié ma classe personnalisée (GroupsTableViewController-> CoreDataTableViewController-> UITableViewController) à partir d'un projet-test où tout fonctionnait correctement, dans mon projet actuel. Je puis allouer/init et addSubview la vue.

Au début, la table apparaîtrait vide. Ce qui donne? Le message viewWillAppear: n'est pas envoyé. Qu'est-ce que ...? D'accord, alors je l'appelle manuellement (à ce stade, je commence déjà à douter de moi-même). Ensuite, la table est remplie de contenu, mais toute l'interactivité a disparu. Pas de robinets, pas de défilement.

J'ai essayé de définir userInteractionEnabled sur tout, mais aucun résultat. C'est une chose N00B, je suis sûr, trop stupide pour être coincé. Pourtant, je suis coincé ici.

Quelqu'un peut-il me diriger dans la bonne direction? Ai-je oublié un délégué quelque part? Ou peut-être un message non envoyé?

Répondre

2

Un problème que vous rencontrez est que les UIViewControllers imbriqués ne reçoivent pas les événements appropriés tels que viewWillAppear :. Selon les directives d'Apple, un UIViewController devrait remplir tout l'écran et ne pas représenter une vue partielle (bien sûr à l'exception des protocoles UITabBarController, UINavigationController et UISplitViewController). Essayez de configurer GroupsTableViewController en tant que contrôleur principal (si c'est dans un UINavigationController, essayez de le pousser, si c'est un affichage partagé, faites-en l'affichage détaillé, etc.). Si cela fonctionne, alors il y a des événements qui n'arrivent pas à cause de vos problèmes. J'espère que cela pourra aider!

+0

Je devrais lire ces directives plus attentivement. Merci pour le coup de pouce. Cela fonctionne en effet s'il remplit l'écran, mais j'ai besoin d'une table pour remplir une partie dynamique de l'écran. Le UISplitViewController a une largeur fixe, donc ce n'est pas une option non plus. Je suppose que je vais réécrire la partie de données de base dans mon propre UITableViewDataSource & ~ Delegate. – epologee

Questions connexes