J'ai une hiérarchie de contrôleur de vue et le contrôleur le plus haut est affiché sous forme de modal et j'aimerais savoir comment afficher la barre de navigation lors de l'utilisation
'UIViewController:presentViewController:viewControllerToPresent:animated:completion'
La documentation de 'presentViewController: animated: completion:' note:
«Sur iPhone et iPod touch, la vue présentée est toujours en plein écran. Sur iPad, la présentation dépend de la valeur de la propriété modalPresentationStyle. '
Pour 'modalPresentationStyle', les documents disent:
Le style de présentation détermine la façon dont un contrôleur de vue présenté modalement est affiché à l'écran. Sur iPhone et iPod touch, les contrôleurs de vue modale sont toujours présentés en plein écran, mais sur iPad, il existe plusieurs options de présentation différentes.
Existe-t-il un moyen de s'assurer que la barre de navigation est visible sous la barre d'état une fois que le contrôle d'affichage s'affiche? Dois-je interpréter le document comme, vous n'obtenez aucune option d'iPhone / iPod et seulement sur iPad?
Auparavant, j'utilisais 'UIViewController:presentModalViewController:animated'
ce qui fonctionnait bien, mais depuis iOS 5.0, l'API est obsolète, je passe donc à la nouvelle.
Visuellement, ce que je cherche à faire, c'est que le nouveau contrôleur se glisse du bas de l'écran, comme le faisait l'ancienne API.
[mise à jour avec code]:
// My root level view:
UIViewController *vc = [[RootViewController alloc]
initWithNibName:nil
bundle:[NSBundle mainBundle]];
navController = [[UINavigationController alloc] initWithRootViewController:vc];
....
// Within the RootViewController, Second view controller is created and added
// to the hierarchy. It is this view controller that is responsible for
// displaying the DetailView:
SecondTierViewController *t2controller = [[SecondTierViewController alloc]
initWithNibName:nil
bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:t2controller animated:YES];
// Created by SecondTierViewController
DetailViewController *controller = [[DetailViewController alloc] initWithNibName:nil
bundle:[NSBundle mainBundle]];
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
controller.modalPresentationStyle = UIModalPresentationCurrentContext;
[self.navigationController presentViewController:controller
animated:YES
completion:nil];
(void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion
'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'
). Comment cela peut-il fonctionner?La navigation:
Retourner:
La navigation:
Retourner:
la source
Peux tu utiliser:
Revenir en arrière (je pense):
la source
J'ai eu le même problème sur ios7. Je l'ai appelé dans selector et cela a fonctionné à la fois sur ios7 et ios8.
la source
Tout ce que vous
[self.navigationController pushViewController:controller animated:YES];
faites est d'animer une transition et de l'ajouter à la pile de contrôleurs de navigation et à d'autres éléments d'animation de la barre de navigation sympas. Si vous ne vous souciez pas de l'animation de la barre, alors ce code devrait fonctionner. La barre apparaît sur le nouveau contrôleur et vous obtenez un geste pop interactif!Edit: Désolé, presentViewController remplira le plein écran. Vous devrez faire une transition personnalisée, avec CGAffineTransform.translation ou quelque chose du genre, animer le contrôleur avec la transition, puis l'ajouter aux viewControllers de navigationController.
la source
Swift 3
la source
Version Swift: Ceci présente un ViewController qui est intégré dans un contrôleur de navigation.
la source
J'utilise ce code. Cela fonctionne bien dans iOS 8.
la source
Une solution
la source
Si vous n'avez pas défini la propriété modalPresentationStyle (comme UIModalPresentationFormSheet), la barre de navigation sera toujours affichée. Pour vous assurer, faites toujours
Cela affichera toujours la barre de navigation.
la source
Si vous utilisez NavigationController dans Swift 2.x
la source
essaye ça
la source