swift - 使用 isHidden = true 隐藏横幅广告
问题描述
我目前在我的 GameViewController 中使用以下代码从 admob 调用横幅广告。
class GameViewController: UIViewController {
var bannerView: GADBannerView!
}
override func viewDidLoad() {
super.viewDidLoad()
bannerView = GADBannerView(adSize: kGADAdSizeBanner)
addBannerViewToView(bannerView)
bannerView.adUnitID = "ca-app-pub-XXXXXXXXX" // Default Google Test Ad Address
bannerView.rootViewController = self
bannerView.load(GADRequest())
bannerView.isHidden = false // <----- This works, but doesn't work in GameScene.swift
这是从上面的代码(也在 GameViewController 中)调用以显示广告的函数。
func addBannerViewToView(_ bannerView: GADBannerView) {
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
view.addConstraints(
[NSLayoutConstraint(item: bannerView,
attribute: .bottom,
relatedBy: .equal,
toItem: bottomLayoutGuide,
attribute: .top,
multiplier: 1,
constant: 0),
NSLayoutConstraint(item: bannerView,
attribute: .centerX,
relatedBy: .equal,
toItem: view,
attribute: .centerX,
multiplier: 1,
constant: 0)
])
}
此代码有效并显示测试广告。但是,在 GameScene.swift 中,当我按下按钮时,我会运行此代码来尝试隐藏广告。
GameViewController().bannerView.isHidden = true
这会导致应用程序因“致命错误:在隐式展开可选值时意外发现 nil”而崩溃。如果我更改它,它不会崩溃,但广告不会隐藏。
GameViewController().bannerView?.isHidden = true
然而在 GameViewController 中,如果我只是将 isHidden 的值更改为 true,那么它就可以工作。
bannerView.isHidden = true
无论如何,当我按下按钮时能够从 GameScene.swift 中隐藏横幅广告?
解决方案
您正在创建一个新实例GameViewController
并切换它的bannerView
属性isHidden
。您应该切换您正在显示的实例的isHidden
属性。bannerView
GameViewController
推荐阅读
- python - Python使用分隔符将对象拆分为多个字符串
- excel - 粘贴图表时的VBA Excel问题
- php - 在php中的表格单元格内实例化对象类?
- c - 您可以将任何复合类型与 C 中的 _Generic 匹配吗?
- c++ - 如何在 Microsoft Visual Studio Community 2019 中运行 Microsoft DirectShow 官方示例 C++ 代码?
- python - Python 3 嵌入式图像未附加在电子邮件中
- gtk - 从 GTK 应用程序将文件夹备份到 pemdrive
- wpf - 使用绑定向 WPF Datagrid 添加新行
- git - 在存储库上创建不同的项目并单独控制每个项目
- apache-spark - 无法在 Jupyter 笔记本中启动 Spark 会话