2017-01-24 3 views
0

Ich habe eine einfache Anwendung, in der ich einen PageViewController anzeigen möchte, wenn ein Benutzer sich zuerst bei der App anmeldet. Sobald sie das Tutorial gesehen haben, wird der PageViewController beim nächsten Laden nicht angezeigt.IOS Presenting PageViewController

Allerdings erhalte ich die folgende Nachricht.

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 - Standard-Controller

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

Anzeige Workthrough Funktion

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

     } 
    } 
} 

Ich denke, es genug Code dort zu untersuchen ist. Wie auch immer, wir freuen uns, wenn du mehr hochladen möchtest.

Antwort

1

Ich glaube nicht, ViewWillAppear ist ausreichend. Ich denke, dass Sie UI nur anzeigen können, nachdem ViewDidAppear aufgerufen wurde. Versuchen Sie, dort Ihren Anruf zu tätigen.

+0

Danke .. Das hat für mich funktioniert. – SteveU

0

amahfouzs Antwort ist vollkommen korrekt. Es ist wichtig, dass Sie die Hierarchie von viewDidLoad, viewWillAppear und viewDidAppear verstehen und wissen, warum diese Funktion in viewDidAppear und nicht in ViewWillAppear funktioniert. Verbringen Sie 5 Minuten damit und es hilft Ihnen sehr, wenn Sie anfangen, größere Anwendungen zu bauen.

Verwandte Themen