Ich habe eine Ansichts-Controller-Hierarchie und der oberste Controller wird als Modal angezeigt und möchte wissen, wie die Navigationsleiste bei Verwendung angezeigt wird
'UIViewController:presentViewController:viewControllerToPresent:animated:completion'
Die Dokumente für 'presentViewController: animiert: Vervollständigung:' Hinweis:
'Auf dem iPhone und iPod touch ist die dargestellte Ansicht immer im Vollbildmodus. Auf dem iPad hängt die Präsentation vom Wert in der Eigenschaft modalPresentationStyle ab. '
Für 'modalPresentationStyle' sagen die Dokumente:
Der Präsentationsstil bestimmt, wie ein modal präsentierter Ansichts-Controller auf dem Bildschirm angezeigt wird. Auf dem iPhone und iPod touch werden Modal View Controller immer im Vollbildmodus angezeigt. Auf dem iPad gibt es jedoch verschiedene Präsentationsoptionen.
Gibt es eine Möglichkeit, um sicherzustellen, dass die Navigationsleiste unterhalb der Statusleiste sichtbar ist, sobald sich das Ansichtssteuerelement selbst anzeigt? Sollte ich das Dokument so interpretieren, dass Sie keine Optionen für iPhone / iPod und nur für iPad erhalten?
Früher habe ich verwendet, 'UIViewController:presentModalViewController:animated'
was gut funktioniert hat, aber seit iOS 5.0 ist die API veraltet, sodass ich auf die neue umsteige.
Visuell möchte ich, dass der neue Controller vom unteren Bildschirmrand eingeblendet wird, genau wie die alte API.
[Aktualisierung mit 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];
quelle
(void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion
'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'
). Wie kann das funktionieren?Navigation:
Zurück gehen:
Navigation:
Zurück gehen:
quelle
Kannst du --- benutzen:
Zurück (glaube ich):
quelle
Ich hatte das gleiche Problem auf ios7. Ich habe es im Selektor aufgerufen und es hat sowohl auf ios7 als auch auf ios8 funktioniert.
quelle
Alles,
[self.navigationController pushViewController:controller animated:YES];
was Sie tun müssen, ist, einen Übergang zu animieren und ihn dem Navigationscontrollerstapel und einigen anderen coolen Animationsmaterialien für die Navigationsleiste hinzuzufügen. Wenn Sie nicht über die Bar Animation kümmern, dann ist dieser Code sollte funktionieren. Die Leiste erscheint auf dem neuen Controller und Sie erhalten eine interaktive Pop-Geste!Bearbeiten: Sorry, presentViewController füllt den gesamten Bildschirm aus. Sie müssen einen benutzerdefinierten Übergang mit CGAffineTransform.translation oder etwas anderem durchführen, den Controller mit dem Übergang animieren und ihn dann zu den viewControllern des Navigationscontrollers hinzufügen.
quelle
Swift 3
quelle
Schnelle Version: Hier wird ein ViewController vorgestellt, der in einen Navigationscontroller eingebettet ist.
quelle
Ich benutze diesen Code. Es funktioniert gut in iOS 8.
quelle
Eine Lösung
quelle
Wenn Sie die Eigenschaft modalPresentationStyle nicht festgelegt haben (wie bei UIModalPresentationFormSheet), wird die Navigationsleiste immer angezeigt. Um dies sicherzustellen, immer tun
Dadurch wird immer die Navigationsleiste angezeigt.
quelle
Wenn Sie NavigationController in Swift 2.x verwenden
quelle
Versuche dies
quelle