web-dev-qa-db-ja.com

AppControllerからViewControllerのインスタンスを取得するSwift

ユーザーがUILocalNotificationをクリックすると、Swiftでアプリデリゲートから特定のViewControllerをロードしようとしています。この関数で呼び出されることがわかりました。

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

しかし、開いているViewControllerの1つにアクセスしようとすると、アプリケーションがクラッシュしているため、nullを返していると思います。ここに私がしようとしているものがあります:

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()

PopToViewController行でクラッシュしています。

19
PretzelJesus

あなたが試すことができます:

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)
25
fuzz