2016-07-22 29 views
1

Ich weiß, dass dies eine häufig gestellte Frage ist, aber ich habe meine Antwort nicht gefunden, nachdem ich alle ähnlichen Fragen gelesen hatte.Interstitial zwischen SplashScreen und HomePage (Segue funktioniert nicht, Blackscreen)

So, hier ist mein Problem, ich bin die Integration von Anzeigen in meiner Anwendung, und im Grunde, was ich versuche zu erreichen ist ein Interstitial während der SplashScreen zu zeigen, kurz vor den HomePage erreichbar.

Denn jetzt ist es das, was ich habe:

- Starten Sie die App -> die Splashscreen-Anzeige -> die Homepage anzeigen und direkt nach der Interstitial-Anzeige.

Was ich will:

- Starten Sie die App -> die Splashscreen-Anzeige -> die Interstitial anzeigen und wenn die Anzeige geschlossen ist, Anzeige der Homepage.

ich die Interstitial während der SplashScreen anzeigen kann, aber meine performSegueWithIdentifier funktioniert nicht, entweder es zeigt mir ein Blackscreen oder die App-Blöcke auf der Splas enter code here hScreen.

Um zu illustrieren, was ich sage, hier ist ein Code meiner SplashScreenViewController.

- (void)loadHomeView 
{ 
    if(_isDataLoaded && !_isInterstitialDisplay && [MFPreferencesUtils firstLaunch] != nil) 
    { 
     [self createSplashInterstitial]; 
     //I also tried with performSelectorOnMainThread 
    } 
} 

Die Interstitielle Delegierten:

-(void)adsAdapterInterstitialDisappear:(Adapter *)adsAdapter{ 
    _isInterstitialDisplay = NO; 
    [self displayHome]; 
} 

Und die displayHome Methode aufgerufen, wenn der Benutzer die Anzeige schließt:

-(void) displayHome 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self performSegueWithIdentifier:@"SplashscreenDisappearToHome" sender:self]; 
    }); 
} 

ich denke, das ein einfaches Verhalten, vielleicht I don‘ t verstehe wirklich, wie Seeges funktioniert, aber wenn ich nicht die Interstitial anrufen und stattdessen direkt meine HomePage anrufen, funktioniert es.

- (void)loadHomeView 
{ 
    if(_isDataLoaded && !_isInterstitialDisplay && [MFPreferencesUtils firstLaunch] != nil) 
    { 
     [self performSelectorOnMainThread:@selector(displayHome) withObject:nil 
    waitUntilDone:NO]; 
    } 
} 

Vielen Dank für das Lesen, lassen Sie mich wissen, wenn Sie einige Ratschläge haben.

+1

Soweit ich mich erinnern kann, können Sie den interstitiellen Lebenszyklus nicht wirklich kontrollieren, da er wie ein Modal behandelt wird. Ich habe Code, der genau das tut, was Sie erreichen möchten, aber momentan keinen Zugriff darauf haben. Was ich Ihnen vorschlagen würde, wäre: Erstellen Sie einen Startbildschirm, der Ihren Startbildschirm nachahmt; Von dort rufen Sie Ihre Interstitial; Interstitial geschlossener Rückruf anhören, um zum nächsten Bildschirm zu gelangen. – Bienemann

Antwort

0

Problem gelöst, ich konnte es beheben, indem ich meine Methode in ViewDidAppear aufruft. Dies war ein Aufruf zur Ausführung von Segue, als meine Ansicht wegen Interstitial noch nicht geladen war.