0

Je souhaite presentViewController lorsqu'un alertController est présenté.Présenter un ViewController bien que UIAlertController soit dans la vue Hiérarchie

Je veux comme si l'utilisateur appuie sur le bouton Ok maintenant je veux montrer le ViewController de AppDelegate sur PushNotification.

Je suis venu à connaître sur le SO que UIAlertController est présenté sur un fil différent veut ainsi présenter le ViewController après que l'utilisateur appuie sur le bouton Ok et se déplace sur fil conducteur comme ci-dessous:

func presentRScreenFromRootViewController() 
{ 

    let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    let rViewController = storyboard.instantiateViewControllerWithIdentifier("rsh") as! R_SVC 
    dispatch_async(dispatch_get_main_queue(),{ 

     self.window?.rootViewController?.presentViewController(rViewController, animated: true, completion: nil) 


    }); 

} 

Mais je me garde comme:

Attempt to present <BB.R_SVC: 0x15b983600> on 
<SWRevealViewController: 0x15652df00> which is already presenting 
<UIAlertController: 0x15b4f2dd0> 

En effet, le viewcontroller présente alertcontroller.Other fois son travail well..My rootVi ewController change et passe à l'écran suivant..Mais quand il y a UIAlertController je reçois un avertissement pour tenter de présenter le viewcontroller qui n'est pas dans la hiérarchie de la vue

Qu'est-ce que je fais de mal?

Répondre

1

lors de la création UIAlertController, placez votre code VCpresenting dans le un UIAlertAction comme si

let alert = UIAlertController(title: "your title", message "move to next VC?", preferredStyle: UIAlertController: UIAlertControllerStyle.Alert) 
let action: UIAlertAction = UIAlertAction(title: "yes move to next VC", style: UIAlertActionStyle.Default) {action -> Void in 
    let rViewController = storyboard.instantiateViewControllerWithIdentifier("rsh") as! R_SVC 
    self.presentViewController(rViewController, animated: true, completion: nil) }) 
alert.addAction(defaultAction) 

self.presentViewController(alert, animated: true, completion: nil) 

modifier: Peut-être essayer Dismiss all UIAlertControllers currently presented.

+0

ce problème se pose tout à l'exécution ... par exemple si l'utilisateur obtient alertviewcontroller sans obtenir de notification push ...... et alertviewcontroller est toujours en vie –

+0

avez-vous essayé cette méthode? il fermera votre UIAlertController puis exécutera le code pour présenter VC. – Dustin

+0

avez-vous vu mon commentaire clairement ??? mais dustin est là de toute façon je peux rejeter s'il y a alertcontroller actuellement dans la vue –