2017-12-12 20 views
0

나는 프로그래밍 방식으로보기를 제시 할 때 내 응용 프로그램 충돌/빈 검은보기를 보여줍니다.AppDelegate 현재 viewController 충돌/빈 화면

vc의 열기는 사용자가 알림을 클릭 할 때 발생합니다. 탭바, 탐색 컨트롤러 및 탭 모음의 첫 번째 VC에서 연결할 수있는보기가 있습니다.

내가 vc (push)에 푸시 된 viewDidLoad()의 모든 것을 삭제할 때 내 응용 프로그램이 충돌 할 때 내 응용 프로그램이 중단되지만 내 응용 프로그램은 vc하지만 비어 있고 검은 색으로 표시됩니다. 내 앱 대리인 푸시 코드. chatvc가 아니라 모든 뷰 컨트롤러를 사용해 보았는데 같은 지점에서 충돌이 발생했습니다.

let chatVc = AllChatsViewController() 

     if let tabbarControler = window?.rootViewController as? MainTabBarController { 
      tabbarControler.selectedIndex = 0 

      //tabbarControler.presentedViewController?.dismiss(animated: true, completion: nil) 


      if let homeNav = tabbarControler.viewControllers?.first as? UINavigationController { 
       homeNav.pushViewController(chatVc, animated: true) 
       print(followerId) 
      } 
     } 

    } 

업데이트 호출 될의 ViewController하지만 둘의 viewDidLoad 또는 다른 기능에 예상대로 그것은 지금 밀어

if let chatPartnerId = userInfo["chatPartnerId"] { 
     let storyboard = UIStoryboard(name:"Chat", bundle: Bundle.main) 
     guard let chatVC = storyboard.instantiateViewController(withIdentifier: "MessageViewController") as? MessageViewController else {return} 
     chatVC.userId = chatPartnerId as! String 

     if let tabbarControler = window?.rootViewController as? MainTabBarController { 
      tabbarControler.selectedIndex = 0 

      tabbarControler.presentedViewController?.dismiss(animated: true, completion: nil) 


      if let homeNav = tabbarControler.viewControllers?.first as? UINavigationController { 
       homeNav.pushViewController(chatVC, animated: true) 

      } 
     } 

, 어떤 아이디어?

+0

이것을 시도하십시오 : https://stackoverflow.com/a/47131085/6680583 – Mannopson

+0

나는 이것을 시도해 보았습니다. self.window를 설정 하시겠습니까? .rootViewController = tabBarController self.window? .makeKeyAndVisible() –

답변

1

대신 let chatVc = AllChatsViewController() 을 시도해 보셨습니까? 스토리 보드에서 인스턴스화 하시겠습니까? 스토리 보드에서 viewController를 찾아 식별자로 사용하십시오 (chatVC를 사용합니다). 위의 방법을 사용하는 경우 모든 파단이 시작하고 자동으로 배치받을 때문에 당신이 그것을 당신은 아마 충돌 따라서하지 않은 자신을 (어떻게해야 당신의 방법과 반대로 다음 let storyboard = UIStoryboard(name:"Main", bundle Bundle.main) let chatVC = storyboard.instantiateViewController(withIdentifier: "chatVC")

이유는있다 그리고 당신이 뷰를 지우면 서브 뷰를 호출하는로드 라인이로드된다는 사실.)

+0

안녕하세요, 저는 방금 LetsBuildThatsApp 녀석으로부터 메소드를 복사했지만 다시 시도 할 것입니다. ong –

+0

잘 그것은 첫 번째 시도에서 일 했어요, 덕분에 당신 upvote! –

+0

내 알림에서 userID를 받았는데 ChatVC의 userID로 설정하려고했지만 chatVC.userId가 작동하지 않아 액세스 할 수 없습니다 –