Utiliser un UITableViewController avec une petite table?
Lors de l'utilisation d'un UITableViewController, le initWithStyle: méthode crée automatiquement les sous-jacents UITableView - selon la documentation - "les dimensions correctes".
Mon problème c'est que ces "dimensions" semblent 320x460 (de l'iPhone, la taille de l'écran), mais je repousse cette TableView/Contrôleur pair dans un UINavigationController qui est elle-même contenue dans une UIView, qui lui-même est d'environ la moitié de la hauteur de l'écran.
Pas de cadre ou de limites de querelles je peux venir avec semble correctement remis à zéro le tableau est de taille, et comme tel il est "trop long", qui signifie qu'il ya un ensemble de lignes qui sont poussés hors de la partie inférieure de l'écran et ne sont pas visibles ni accessibles par défilement.
Donc ma question vient: quelle est la bonne manière de raconter une UITableViewController redimensionner sa composante UITableView à un rectangle spécifié?
Merci!
Mise à jour j'ai essayé toutes les techniques suggérées ici en vain, mais j'ai trouvé une chose intéressante: si je n'UINavigationController au total (dont je ne suis pas encore prête à faire pour la production, mais comme une expérience), et ajouter l'affichage de la table comme un direct sous-vue de l'affichage de la vue je l'ai mentionné, la taille de l'image donnée est respecté. Le moment je ré-introduire la UINavigationController dans le mélange, peu importe si elle est ajoutée comme une sous-vue avant ou après l'affichage de la table, et peu importe si alloc/init avant ou après l'affichage de la table est ajoutée une sous-vue, le résultat est le même qu'avant.
Je commence à soupçonner UINavigationController n'est pas beaucoup d'un joueur de l'équipe de...
Mise à jour 2 La suggestion pour vérifier la taille de l'image après l'affichage de la table à l'écran est bonne: s'avère que la manette de navigation est en fait le redimensionnement d'un peu de temps entre le chargement et l'affichage. Ma solution, hacky au mieux, a été de mettre en cache le cadre de la charge et de le réinitialiser en cas de changement au début de la tableView:cellForRowAtIndexPath:. Pourquoi demandez-vous? Parce que c'est le seul endroit où je trouve que travaillé, c'est pourquoi!
Je ne considère pas cela une solution, c'est évidemment abusif, mais pour le bénéfice de quelqu'un d'autre lecture, il ne semble pas fonctionner.
source d'informationauteur rpj
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas simplement utiliser un UIViewController et de créer la table manuellement?
J'ai eu le même problème et je l'ai résolu avec:
Ceci est fait dans le parent (juste une plaine UIViewController dans mon cas, le contrôleur de l'.
J'ai eu le même problème et je l'ai résolu par le redimensionnement de la tableView dans le viewDidAppear fonction de la UITableViewController. Pas la solution idéale, mais il fonctionne.
Vous pouvez définir la marge du haut à l'aide de :
c'est Pas une bonne pratique , juste au cas où vous désirez avoir plus d'espace en haut, vous pouvez l'utiliser .
Ne devraient pas utiliser UITableViewController , il suffit simplement d'Utiliser UIViewController et Créer par programmation UITableview
Je suis d'accord avec Ben de la réponse. J'ai souvent courir dans la situation où j'ai besoin de redimensionner un UITableVIew due à d'autres contrôles d'un point de vue.
J'ai l'habitude de juste un UIViewController avec un UITableView IBOutlet. Ensuite, si j'en ai besoin, je peux manipuler la UITableView frame de l'objet pour le rendre à la taille dont j'ai besoin.
Je ne suis pas sûr de savoir pourquoi vous êtes en train de créer une autre vue contrôleur pour votre table. Cependant, dans votre code, je ne vous vois pas l'ajout de l'affichage de la table à son parent. Vous pouvez également essayer de réduire les limites de la hauteur jusqu'à ce que le tout s'affiche sur l'écran; une fois que vous faites cela, il peut vous donner un aperçu de pourquoi il ne fonctionne pas comme vous le souhaitez.
Vérifier la autoresizingMask et contentMode propriétés de la UITableView. Ceux-ci peuvent affecter l'image.
j'ai résolu ce problème par le présent code
Si vous utilisez l'Interface Builder, vous pouvez simplement aller à "Affichage de Tableau de Taille" propriétés de la fenêtre, et le changement de Fond d'Encarts de leur Contenu et de Scroller avec la hauteur d'un autre widget.
Essayer:
Espère que cette aide.
Définir le cadre dans
UINavigationController
.