2017-02-03 16 views
0

Моя цель - показать, что в моем UITableView есть собственные объявления для объявлений, в которых используются разделы. Каждая 10-я ячейка TOTAL (объединяющая ячейки из всех разделов) должна быть Нативным экспресс-объявлением. Каждая другая ячейка будет нормальной ячейкой.Родные экспресс-объявления не отображаются в моем UITableView

Проблема в том, что реклама не появляется. Я считаю, что проблема кроется в моей работе с cellForRowAt. Я последовал за инструкцией Эндрю Брогдона: https://www.youtube.com/watch?v=chNb7-k6m4M - Я думаю, что часть, с которой я запуталась, находится вокруг отметки 5:10.

Я заливкой ObjectsArray, как AnyObject, так что клетки могут держать оба FruitObjects и GADNativeExpressAdView

Мой код:

Класс:

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

Можете ли вы помочь мне получить Native объявлений, показываемых каждую 10-ю ячейку?

Я считаю, что проблема заключается в коде, который я разместил выше. Возможно, в моем кастинге? Если ничто не выглядит раздражающе, сообщите мне, и я опубликую больше своего ViewController.

Благодарим вас за любую помощь, которую вы можете предоставить!

ответ

0

Это связано с загрузкой первого объявления в (из видеосвязь вы предоставили)

func nativeExpressAdViewDidReceiveAd(_ nativeExpressAdView: GADNativeExpressAdView) { } 

Кроме того, указанный размер, используемый.

let size = GADAdSizeFullWidthPortraitWithHeight(300) 

Попробуйте загрузить запрос в ячейку deque, так как загрузка рекламы происходит в ячейке deque. Не беспокойтесь, поскольку мы удаляем subviews, прежде чем добавить.

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 

}