【问题标题】:Showing/Hiding Static TableView Cell If BannerView Loads/Not Load如果 BannerView 加载/未加载,则显示/隐藏静态 TableView 单元格
【发布时间】:2016-09-05 02:43:42
【问题描述】:

我已将 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 有效地“隐藏”。

我一直在尝试根据自己的需要修改代码,但被卡住了。

问题:我是否走在正确的轨道上?这是我应该如何处理这个问题吗?如何根据需要修改代码?

感谢您的宝贵时间;)

【问题讨论】:

    标签: ios swift uitableview show-hide banner


    【解决方案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()
    }
    

    【讨论】:

    • 谢谢桑迪普。谢谢你为我填空。还将按照您的建议合并self.tableView.reloadData()。杰出的!祝你愉快!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多