Ouverture de la vue-contrôleur à partir de l'app délégué utilisation de swift
Je suis en train de créer une notification push qui détermine la perspective de l'ouverture selon les informations obtenues de la poussée.
J'ai réussi à obtenir l'information de la pousser, mais je suis maintenant de la difficulté à obtenir le point de vue d'ouvrir
À regarder d'autres débordement de pile questions, j'ai celui-ci actuellement:
Délégué d'application N'a la fin du chargement:
//Extract the notification data
if let notificationPayload = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary {
//Get which page to open
let viewload = notificationPayload["view"] as? NSString
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
//Load correct view
if viewload == "circles" {
var viewController = self.window?.rootViewController?.storyboard?.instantiateViewControllerWithIdentifier("Circles") as! UIViewController
self.window?.rootViewController = viewController
}
}
Actuellement, c'est un échec sur le var ViewController = auto... ligne.
- Vérifier ceci réponse
- Je l'ai essayé et il fonctionne aussi loin que l'ouverture de "Cercles" - vue-contrôleur. Mais disons que les "Cercles" - vue-contrôleur est lui-même à l'intérieur d'un sous-arbre de l'arbre de navigation de mon application. Comment faire en sorte qu'une fois que j'ouvre mon application dans des "Cercles" - vue-contrôleur, à toutes les navigations de travail? Pour l'instant, elle ouvre des "Cercles" - vue-contrôleur sans montrer le dos de navigation.
Vous devez vous connecter pour publier un commentaire.
Vous devez définir ViewController StoryBoardId propriété comme l'image ci-dessous.
ouvrir viewController à l'aide des codes ci-dessous dans swift
Swift 3:
C'est mon approche préférée lors de la présentation d'un nouveau viewController de l'actuel viewController par le biais de l'AppDelegate. De cette façon, vous n'avez pas entièrement à la déchirure en bas de votre point de vue de la hiérarchie lors de la manipulation d'une notification push ou universelle lien
applicationWillEnterForeground
méthode de mon appDelegate pour forcer le redémarrage de mon application à l'écran de démarrage lorsque la réouverture de cette façon, que je puisse bien me rafraîchir les données de l'INTERFACE et par le maintien d'une simple "par l'intermédiaire d'une voie" modèle lol 🙂 Merci!Swift 3
À présenter le point de vue avec la manette de navigation:
D'abord Initialiser le
window
Pour la mise
rootViewController
à l'intérieur deAppDelegate
ClasseIl y a une swift 4 version
Dans Swift 3
Je dirais que la création de UIWindow chaque fois que vous voulez changer rootViewController est une mauvaise idée. Après quelques changements de rootVC (en utilisant la partie supérieure de la solution) tu vas avoir beaucoup de UIWindows dans votre application à la fois.
À mon avis, la meilleure solution est:
let rootVC = UIStoryboard(name: "StoryboardName", bundle: nil).instantiateViewControllerWithIdentifier("newRootVCIdentifier") as UIViewController
rootVC.view.frame = UIScreen.mainScreen().bounds
UIView.transitionWithView(self.window!, duration: 0.5, options: .TransitionCrossDissolve, animations: {
self.window!.rootViewController = rootVC
}, completion: nil)
Fait!
Vous n'avez pas besoin de méthode
window?.makeKeyAndVisible()
, l'origine de cette solution fonctionne sur l'application actuelle de la fenêtre.Swift 3 SWRevealViewController
SWIFT 4