Showing/Hiding 静态 TableView 单元格如果 BannerView Loads/Not 加载
Showing/Hiding Static TableView Cell If BannerView Loads/Not Load
我已将 AdMob 标准横幅集成到静态表格视图单元格中(表格视图:1 个部分,5 行)。
我想根据是否加载横幅自动隐藏或显示相关的表格视图单元格(包含 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
将始终在同一个表格视图单元格(行索引 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
.
有效 "hidden"
我一直在尝试根据自己的需要修改代码,但还是卡住了。
问题:我走的路对吗?这是我应该如何处理这个问题吗?我怎样才能根据需要修改代码?
感谢您的宝贵时间 ;)
凯瑟琳·詹金斯,
是的,您采用的方法绝对没问题。
在您的情况下,您可能只想检查 bannerView 是否隐藏。如果隐藏,则将行高设置为 0,否则 return 正确设置单元格的高度。
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()
}
我已将 AdMob 标准横幅集成到静态表格视图单元格中(表格视图:1 个部分,5 行)。
我想根据是否加载横幅自动隐藏或显示相关的表格视图单元格(包含 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
将始终在同一个表格视图单元格(行索引 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
.
我一直在尝试根据自己的需要修改代码,但还是卡住了。
问题:我走的路对吗?这是我应该如何处理这个问题吗?我怎样才能根据需要修改代码?
感谢您的宝贵时间 ;)
凯瑟琳·詹金斯,
是的,您采用的方法绝对没问题。
在您的情况下,您可能只想检查 bannerView 是否隐藏。如果隐藏,则将行高设置为 0,否则 return 正确设置单元格的高度。
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()
}