2014-07-08 1 views
17

사용자가 UILocalNotification을 클릭 할 때 신속하게 App Delegate에서 특정 ViewController를로드하려고합니다. 나는이가이 함수에서 호출되는 것을 알아 낸 :AppController의 인스턴스를 Swift에서 AppDelegate에서 가져 오기

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

하지만 시도하고 개방 ViewControllers 접근 한 때 나는 내 응용 프로그램이 충돌되어 있기 때문에 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 라인에서 충돌합니다.

답변

23

당신이 시도 할 수 :

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) 
+0

나는 함수 내부에서이를 사용하여 시도하고 내가 xcode7 및 swift2을 사용하고, 작동하지 않았다. 위의 코드를 업데이트하시기 바랍니다. – suisied

+0

@suisied StackOverflow에 대한 질문을 만들고 그 코드에 연결하지 않아도 문제를 진단 할 수는 없으므로 가치가 있습니다. – fuzz

+0

빠른 "2"작업이 불가능합니다. "메인"스토리 보드를 얻는 것이 불가능합니다. –