J'ai un couple de contrôleurs de vue que je veux tous partager une barre d'état d'en-tête. Cette vue d'en-tête montre le statut de certaines choses dans mon application. J'ai utilisé IB pour mettre en page le contenu de la vue d'en-tête dans son propre xib, puis j'ai utilisé IB pour mettre en page les contrôleurs de vue, en ajoutant un élément UIView de placeholder dans les xibs du contrôleur de vue lorsque je le charge dans l'en-tête. Maintenant, quand je crée une sous-classe UIView à partir du contenu de la vue xib, et l'ajouter comme sous-vue à l'un de mes contrôleurs de vue, l'emplacement que j'ai spécifié pour la vue d'en-tête dans mon contrôleur xib semble être ignoré, et la vue d'en-tête est placée à (0,0) quoi qu'il arrive. Tout le contenu de l'affichage de l'en-tête se charge et apparaît bien, c'est juste l'emplacement de la vue d'en-tête dans le contrôleur de vue qui est faux.L'emplacement spécifié par xib se déplace sur la charge UIView?
Voilà comment je charge et en ajoutant mon point de vue d'en-tête à mon contrôleur de vue:
header = [InfoHeader loadFromNib:MY_NIB_NAME withOwner:self];
[self.view addSubview:header];
Le contrôleur est vue xib confirmé avoir une sortie reliée à la variable 'en-tête. Et voici la méthode 'loadFromNib':
+(InfoHeader *) loadFromNib: (NSString *) nibName withOwner:(id) objectOwner
{
NSBundle *b = [NSBundle mainBundle];
NSArray *nib = [b loadNibNamed:nibName owner:objectOwner options:nil];
InfoHeader *header;
for (id obj in nib)
{
if ([obj isKindOfClass:[InfoHeader class]])
{
header = (InfoHeader *) obj;
}
}
return header;
}
Des idées sur quoi vérifier ici? Je préfère ne pas localiser la barre d'en-tête par programme, mais laissez IB le faire.
Oui, mon sous-vue est de 44 pixels vers le bas de la en haut dans IB. Mais, peu importe où je place l'UIView dans IB, la vue affichée apparaît à (0,0). –
Attendez, votre vue d'en-tête est juste une vue à droite, comment pouvez-vous mettre 44 pixels en haut IB? Je n'obtiens pas votre mise en page dans IB pour être honnête. – vodkhang
Oui, ma vue d'en-tête est juste une vue dans la vue principale de mon contrôleur. Le contrôleur de vue a l'affichage en mode plein écran, puis j'ai placé une vue plus petite (pour mon en-tête) dans cette vue. Partout où je place cet objet UIView dans IB (haut, bas, n'importe où), il apparaît en haut quand je le lance. –