2017-01-24 5 views
0

사용자가 처음으로 앱에 로그인 할 때 PageViewController를 표시하고자하는 간단한 어플리케이션이 있습니다. 튜토리얼을 본 다음에는 PageViewController가 표시되지 않습니다.IOS PageViewController 프리젠 테이션

그러나 다음 메시지가 표시됩니다.

2017-01-24 00:20:32.620321 Infinity Toolkit[591:83298] Warning: Attempt to present <Infinity_Toolkit.PageViewController: 0x10e026000> on <Infinity_Toolkit.ViewController: 0x10dd0b030> whose view is not in the window hierarchy!  

의 UIViewController - 기본 컨트롤러

override func viewWillAppear(_ animated: Bool) { 
    displayWalkthroughs() 
} 

디스플레이 Workthrough 기능 내가 거기에 조사 할 수있는 충분한 코드가 생각

func displayWalkthroughs() 
{ 
    // check if walkthroughs have been shown 
    let userDefaults = UserDefaults.standard 
    let displayedWalkthrough = userDefaults.bool(forKey: "DisplayedWalkthrough") 

    // if we haven't shown the walkthroughs, let's show them 
    if !displayedWalkthrough { 
     let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
     // instantiate neew PageVC via storyboard 
     if let pageViewController = storyboard.instantiateViewController(withIdentifier: "PageViewController") as? PageViewController { 
      self.present(pageViewController, animated: true, completion: nil) 
     print("tried") 

     } 
    } 
} 

. 그러나 더 많이 업로드해야 행복합니다.

답변

1

저는 viewWillAppear로 충분하다고 생각하지 않습니다. viewDidAppear이 호출 된 후에 만 ​​UI를 표시 할 수 있다고 생각합니다. 전화를 걸어보십시오.

+0

고맙습니다. 저에게 도움이되었습니다. – SteveU

0

amahfouz 님의 답변은 완벽합니다. viewDidLoad, viewWillAppear 및 viewDidAppear의 계층 구조와이 함수가 viewWidAppear이 아닌 viewDidAppear에서 작동하는 이유를 이해하는 것이 중요합니다. 그렇게하는 데 5 분이 걸리면 큰 응용 프로그램을 만들 때 많은 도움이됩니다.