2009-09-16 8 views
3

J'ai une vue (et contrôleur de vue correspondant) dans mon application iPhone qui permet à l'utilisateur de modifier les paramètres de l'application. Cette vue est accessible via un menu (une vue de table). J'utilise pushViewController dans ma sous-classe UIViewController pour l'afficher. Quand je fais cela, il apparaît comme je l'espère - la barre de navigation apparaît au-dessus du xib, et l'espace vide que j'ai laissé là-bas dans le xib est occupé.Est-il conseillé d'utiliser le même xib dans une vue UINavigationController et une vue modale?

Je montre aussi parfois que l'affichage des paramètres est une vue modale utilisant presentModalViewController. Lorsque je fais cela, le haut du xib commence au bas de la barre de navigation au lieu de dessous.

La documentation indique que presentModalViewController va redimensionner la vue pour s'adapter, donc je pourrais voir ce comportement attendu. Cependant, pour moi, ce n'est pas le comportement souhaité.

Je peux contourner le problème en réglant le contrôleur de vue des paramètres pour ne pas afficher la barre de navigation, mais il y a un espace vide étrange en haut de la vue.

Idéalement, j'aimerais utiliser le même xib dans ces deux situations. Cependant, ce n'est peut-être pas une bonne pratique? Comment utilisez-vous habituellement un xib?

Je pensais que peut-être je pourrais avoir le contrôleur de vue déplacer tous les contrôleurs vers le haut si c'est en mode modal, mais je voudrais quelque chose de mieux, si elle est disponible.

Répondre

1

Chaque vue UIV possède une propriété autoresizingMask. En configurant cela (peut être fait dans Interface Builder), vous devriez pouvoir réutiliser la vue et la faire automatiquement redimensionner pour occuper tout l'écran quand la barre de navigation ne devrait pas être là.

documentation d'Apple est ici:

http://developer.apple.com/iPhone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40007072-CH8-SW10

+0

Eh bien, dans ce cas, la barre de navigation apparaît dans les deux situations - lorsqu'il est chargé à partir d'une pile de contrôleur de vue et quand montrent en vue modal. Dans le second cas, il déplace automatiquement les contrôles vers le bas pour tenir compte de la barre de navigation, que le masque d'autoresizing ait ou non une "entretoise" en haut. Cependant, il est bon de savoir sur layoutSubviews. – Jim

Questions connexes