2016-04-16 11 views
0

Ich verwende den folgenden Code, um Admob Banner im Header von tableView anzuzeigen. Das Banner sollte nur auf dem iPhone angezeigt werden, nicht jedoch auf dem iPad. Dieser Code funktioniert auf dem iPhone, aber mein iPad ist abgestürzt. Wo bin ich falsch gelaufen?Ausführen von Objective C basierend auf USER_INTERFACE_IDIOM

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
    { 
     GADBannerView *sampleView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner]; 

     sampleView.adUnitID = @"ca-app-pub-mycode"; 

     sampleView.rootViewController = self; 

     [sampleView loadRequest:[GADRequest request]]; 

     return sampleView; 
    } 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    { 
    } 
} 
+0

können Sie Ihren Absturzbericht anzeigen –

Antwort

1

Sie müssen eine UIView (oder Unterklasse oder Nil) aus der Methode zurückgeben. Auf dem iPhone geben Sie die Beispielansicht zurück, aber Sie geben nichts zurück, wenn diese Methode auf dem iPad ausgeführt wird.

Wenn Sie nicht eine Ansicht, wenn auf dem iPad zurückkehren möchten, dann gehen Sie folgendermaßen vor:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 
     GADBannerView *sampleView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner]; 

     sampleView.adUnitID = @"ca-app-pub-mycode"; 

     sampleView.rootViewController = self; 

     [sampleView loadRequest:[GADRequest request]]; 

     return sampleView; 
    } else { 
     return nil; 
    } 
} 
+0

Warum zwei 'if' Anweisungen? Verwenden Sie einfach ein 'else' auf dem ersten 'if'. Es gibt nur zwei Idiome. – rmaddy

+0

@rmaddy - Sie haben absolut Recht - Ich habe nur versucht, meine Modifikation des OP-Code Beispiel so minimal wie möglich zu halten, aber ja, ein anderes wäre besser gewesen und ich korrigiere meins. – siburb

0

Methode der Rückgabetyp UIView ist so haben Sie UIView Objekt zurückzukehren. Wenn kein Objekt vorhanden ist, bedeutet dies, dass die Ansicht angezeigt wird, und geben dann nil zurück.

Verwandte Themen