我已将AdMob标准横幅整合到静态tableview单元格中(tableview:1节,5行)。
我想自动隐藏或显示相关的tableview单元格(包含AdMob横幅视图),具体取决于横幅是否已加载。
我的AdMob横幅广告代码:
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())
}
测试横幅是否加载的功能:
func adViewDidReceiveAd(bannerView: GADBannerView!) {
bannerView.hidden = false
}
func adView(bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) {
bannerView.hidden = true
}
我的bannerView
将始终在同一个tableview单元格中显示(如果可用于加载)(行索引3)。
我正在考虑这段代码来实现我想要的结果:
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
}
我从一个类似的问题得到的,其中单元格高度返回为零(0)并且有效地"隐藏"如果!myImageIsLoaded
。
我一直在努力根据自己的需要修改代码,但是卡住了。
问题:我是否走在正确的轨道上?这是我应该如何处理这个问题的?如何根据我的需要修改代码?
感谢您的时间;)
答案 0 :(得分:1)
是的,你所遵循的方法绝对没问题。
在您的情况下,您可能只想检查bannerView是否隐藏。如果隐藏,则将行高设置为0,否则正确返回单元格的高度。
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
}
}
并且为了反映单元格高度的变化,您可以
func adViewDidReceiveAd(bannerView: GADBannerView!) {
bannerView.hidden = false
self.tableView.reloadData()
}
func adView(bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) {
bannerView.hidden = true
self.tableView.reloadData()
}