2017-02-03 2 views
0

Mein Ziel ist es, Native Express-Anzeigen in meinem UITableView anzuzeigen, das Abschnitte verwendet. Jede 10. TOTAL-Zelle (die Zellen aus allen Abschnitten miteinander kombiniert) sollte eine Native Express-Anzeige sein. Jede andere Zelle wird eine normale Zelle sein.Native Express-Anzeigen werden in meinem UITableView nicht angezeigt.

Das Problem ist, dass keine Anzeigen jemals angezeigt werden. Ich glaube, das Problem liegt in meiner cellForRowAt-Besetzung. Ich folgte Andrew Brogdons Tutorial hier: https://www.youtube.com/watch?v=chNb7-k6m4M - Ich denke, der Teil, bei dem ich verwirrt bin, ist um 5:10.

ich die objectsArray als ANYOBJECT bin Gießen, so dass die Zellen, die beide FruitObjects halten und GADNativeExpressAdView

Mein Code:

Klasse:

struct FruitObjects { 
    var sectionName: String! 
    var sectionObjects: [FruitModel]! 
} 
var objectsArray = [AnyObject]() 

viewDidLoad:

objectsArray = [ 
     FruitObjects(sectionName: "A", sectionObjects: [ 
      FruitModel(fruitTerm: "Apple", definition: "Lorem Ipsum Dolor Sit Amet."), 
      FruitModel(fruitTerm: "Apple 2", definition: "Lorem Ipsum Dolor Sit Amet."), 
      FruitModel(fruitTerm: "Apple 3", definition: "Lorem Ipsum Dolor Sit Amet.") 
      ]) as AnyObject, 

     FruitObjects(sectionName: "B", sectionObjects: [ 
      FruitModel(fruitTerm: "Banana", definition: "Lorem Ipsum Dolor Sit Amet."), 
      FruitModel(fruitTerm: "Banana 2", definition: "Lorem Ipsum Dolor Sit Amet."), 
      FruitModel(fruitTerm: "Banana 3", definition: "Lorem Ipsum Dolor Sit Amet.") 
      ]) as AnyObject, 

     FruitObjects(sectionName: "C", sectionObjects: [ 
      FruitModel(fruitTerm: "Clementine", definition: "Lorem Ipsum Dolor Sit Amet."), 
      FruitModel(fruitTerm: "Clementine 2", definition: "Lorem Ipsum Dolor Sit Amet.") 
      ]) as AnyObject 

] 

UITableViewDataSource:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    let myCast = objectsArray[section] as? FruitObjects 
    return myCast!.sectionObjects.count 
} 

func numberOfSections(in tableView: UITableView) -> Int { 
    return objectsArray.count 
} 
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
    let myCast = objectsArray[section] as? FruitObjects 
    return myCast!.sectionName 
} 

cellForRowAt:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    if let myCast = objectsArray[indexPath.section] as? FruitObjects{ 
     let cell = tableView.dequeueReusableCell(withIdentifier: "CellID", for: indexPath) 
     cell.textLabel?.text = myCast.sectionObjects[indexPath.row].fruitTerm 
     print("CELL") 
     return cell 
    } 
    else { 
     let adView = objectsArray[indexPath.row] as! GADNativeExpressAdView 
     let reusableAdCell = tableView.dequeueReusableCell(withIdentifier: "NativeExpressAdViewCellReuseID", for: indexPath) 
     // MISSING removeFromSuperview https://www.youtube.com/watch?v=chNb7-k6m4M 5:51 
     reusableAdCell.contentView.addSubview(adView) 
     adView.center = reusableAdCell.contentView.center 
     print("NATIVE") 
    } 
} 

Können Sie mir Native Anzeigen helfen, jede 10. Zelle angezeigt?

Ich glaube, das Problem liegt in dem Code, den ich oben gepostet habe. Vielleicht in meinem Casting? Wenn nichts störend ausschaut, lass es mich wissen und ich werde mehr von meinem ViewController posten.

Vielen Dank im Voraus für jegliche Hilfe, die Sie leisten können!

Antwort

0

angegeben, verwendet Dies ist darauf zurückzuführen

func nativeExpressAdViewDidReceiveAd(_ nativeExpressAdView: GADNativeExpressAdView) { } 

Auch die Größe der ersten Anzeige in (aus dem Video-Link zur Verfügung gestellt) zu laden.

Versuchen Sie, die Anfrage in Deque-Zelle zu laden, da die Anzeigenladung in Zelle Deque passiert. Keine Sorge, wir entfernen die Subviews, bevor wir hinzufügen.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
     let cell = tableView.dequeueReusableCell(withIdentifier: "NativeExpressAdViewCellReuseID",for: indexPath) 

     let adView = self. objectsArray[indexPath.row] as! GADNativeExpressAdView 

     for subView in cell.contentView.subviews { 
      subView.removeFromSuperview() 
     } 

     cell.selectionStyle = .none 
     cell.contentView.addSubview(adView) 
     let request = GADRequest() 
     request.testDevices = [kGADSimulatorID]//for running it in simulator 
     adView.load(request) 
     adView.center = cell.contentView.center 
     return cell 

}

Verwandte Themen