21

I am trying to load a specific ViewController from the app delegate in swift when a user clicks a UILocalNotification. I have figured out that this is called in this function:

func application(application: UIApplication!, didReceiveLocalNotification notification: UILocalNotification!)

But when I try and access one of the open ViewControllers I think it's returning null because my application is crashing. Here is what I am trying:

var rootViewController = self.window!.rootViewController
var storyBoard = rootViewController.storyboard
var setViewController = storyBoard.instantiateViewControllerWithIdentifier("CurrentShows") as ViewController_CurrentShows

rootViewController.navigationController.popToViewController(setViewController, animated: false)
setViewController.reloadData()

It's crashing on the popToViewController line.

1 Answer 1

27

You could try:

let rootViewController = self.window!.rootViewController
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let setViewController = mainStoryboard.instantiateViewControllerWithIdentifier("CurrentShows") as! DetailViewController
rootViewController?.navigationController?.popToViewController(setViewController, animated: false)

Swift 3:

let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let controller = mainStoryboard.instantiateViewController(withIdentifier: "viewController")
self.present(viewController, animated: true, completion: nil)
Sign up to request clarification or add additional context in comments.

3 Comments

I tried using this inside a function and it didn't work, I'm using xcode7 and swift2. do you mind updating the code above please.
@suisied Might be worth creating a question on StackOverflow and linking to it as we can't really diagnose your issue without seeing your code.
not working in swift 2.. impossible to get "Main" storyboard.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.