2016-11-04 2 views
0

"viewWillAppear"를 사용하여 기본값에 데이터가있는 경우 UserDefaults.standard를 확인합니다. 대시 보드보기로 리디렉션하고 로그인을 전달하고 싶습니다.신속한 viewWillAppear 리디렉션

로그인 할 때 정상적으로 앱이 리디렉션되지만 데이터가있는 경우에는 viewWillAppear에 표시되지 않습니다.

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 

    let defaults = UserDefaults.standard 
    if defaults.string(forKey: "username") != nil { 
     print("Exist") 
     print(defaults.string(forKey: "username")!) 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let vc = storyboard.instantiateViewController(withIdentifier: "Dashboard") 
     self.present(vc, animated: true, completion: nil) 
    } 

} 

그리고이 오류가 발생합니다.

2016-11-04 17:44:32.130024 RHiOS[1155:278240] Warning: Attempt to present <RHiOS.MenuViewController: 0x100f0d480> on <RHiOS.ViewController: 0x100e0b880> whose view is not in the window hierarchy! 

데이터가있는 경우 어떻게 대시로 리디렉션 할 수 있습니까? 감사.

답변

0

보기가 아직 표시되지 않은 경우 아무 것도 표시 할 수 없으므로 코드를 viewDidAppear으로 이동하거나이보기가 처음에 표시되지 않도록하고 대시 보드로 직접 리디렉션하지 않아야합니다 데이터가 있는지 여부에 따라 대시 보드 또는 로그인 화면을 표시하는 상위보기 컨트롤러에서 가져옵니다.

1

viewWillAppear에 ViewController를 표시 할 수 없습니다. 이 코드를 viewDidAppear에두면 문제가 해결됩니다.
보기가 표시되지 않으면 언급 된 오류와 같이 창 계층 구조에 없습니다. 스토리 보드에 단편을 만들고 대신 performSegue(withIdentifier:sender:)으로 전화 할 수도 있습니다.

+0

하지만 로그인을 표시하기 전에 내가 어떻게 만들 수 있습니까? UserData가 존재하면 로그인을 표시하지 말고 대시 보드 만 표시합니다. UserData가 비어 있으면 로그인을 표시하려면 aViewController 인스턴스의 부모가 필요합니까? –

+0

이 문제를 해결하기 위해 프레젠테이션을 사용할 수 없습니다. 주 화면을 보여주고 로그인 화면으로 움직이면 괜찮지 만, 이것을 피하려면 AppDelegate에 window.rootViewController를 설정하여 사용자에게 무엇인가 제시되기도합니다 – Yariv

관련 문제