2016-05-10 4 views
2

Ich habe das AdMob-Standard-Banner in eine statische Tabellenansichtszelle integriert (Tabellenansicht: 1 Abschnitt, 5 Zeilen).Statische TableView-Zelle anzeigen/ausblenden Wenn BannerView geladen/nicht geladen wird

Ich möchte die relevante Tableview-Zelle (die die AdMob-Banneransicht enthält) automatisch ausblenden oder anzeigen, abhängig davon, ob das Banner geladen ist oder nicht.

Mein Code für die AdMob-Banner Integration:

import UIKit 
import GoogleMobileAds 

class WorkoutsFreeListTVC: UITableViewController, GADBannerViewDelegate { 

@IBOutlet weak var bannerView: GADBannerView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    bannerView.hidden = true 
    bannerView.adUnitID = "ca-app-pub-9451126739340372/2084650447" 
    bannerView.rootViewController = self 
    bannerView.delegate = self 

    let request = GADRequest() 
    request.testDevices = ["dcf33ab873fb56fdf5ff94bd7a5f3fde"] 

    bannerView.loadRequest(GADRequest()) 
} 

Funktionen, wenn Banner Lasten zu testen oder auf andere Weise:

func adViewDidReceiveAd(bannerView: GADBannerView!) { 
    bannerView.hidden = false 
} 

func adView(bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) { 
    bannerView.hidden = true 
} 

Mein bannerView wird immer (wenn verfügbar für Last) dargestellt werden in der gleichen Tabellenansichtszelle (Zeilenindex 3).

ich entlang der Linien dieses Codes denke mein gewünschtes Ergebnis zu erzielen:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
if indexPath.row == 3 && !myImageIsLoaded { 
    return 0 
} 
// Will hide just the fourth row of my table if myImageIsLoaded is false 

return 50 

}

, die ich von einer ähnlichen Frage bekam, wodurch Zellenhöhe als Null zurückgeführt wurde (0) und effektiv "versteckt" wenn !myImageIsLoaded.

Ich habe versucht, den Code auf meine Bedürfnisse zu ändern, aber bin fest.

Fragen: Bin ich auf dem richtigen Weg? Soll ich mich dem Thema nähern? Wie kann ich den Code meinen Bedürfnissen anpassen?

Vielen Dank für Ihre Zeit;)

Antwort

1

Katherine Jenkins,

Ja der Ansatz, den Sie folgen absolut in Ordnung ist.

In Ihrem Fall ist wahrscheinlich alles, was Sie überprüfen möchten, ist BannerView ausgeblendet oder nicht. Wenn ausgeblendet, dann setze die Zeilenhöhe auf 0, ansonsten gib die Höhe der Zelle richtig zurück.

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if indexPath.row == 3 { 
     if bannerView.hidden 
      return 0 
     else 
      return 50 //value of height for banner cell 
    } 
    else { 
     return 50 //return other cell height 
    } 
} 

und um die Veränderungen in der Zellhöhe zu reflektieren können Sie

func adViewDidReceiveAd(bannerView: GADBannerView!) { 
    bannerView.hidden = false 
    self.tableView.reloadData() 
} 

func adView(bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) { 
    bannerView.hidden = true 
    self.tableView.reloadData() 
} 
+0

Dank Sandeep tun. Danke, dass du die Lücken für mich ausgefüllt hast. Wird auch 'self.tableView.ReloadData()' enthalten, wie Sie es empfohlen haben. Brillant! Hab einen wundervollen Tag! –

Verwandte Themen