ios - 可选类型“UIWindow?”的值 必须解包以引用已包装基类型“UIWindow”的成员“viewWithTag”
问题描述
我已经将一个 Objective-C 文件转换为 Swift,现在它被转换为:
if isCaptured {
let colourView = UIView(frame: window.frame)
colourView?.backgroundColor = UIColor.black
colourView?.tag = 1234
colourView?.alpha = 0
window!.makeKeyAndVisible()
window.addSubview(colourView)
// fade in the view
UIView.animate(withDuration: 0.5, animations: {
colourView?.alpha = 1
})
} else {
// grab a reference to our coloured view
let colourView = window.viewWithTag(1234)
// fade away colour view from main view
UIView.animate(withDuration: 0.5, animations: {
colourView?.alpha = 0
}) { finished in
// remove when finished fading
colourView?.removeFromSuperview()
}
}
但我收到以下错误:
可选类型“UIWindow?”的值 必须解包以引用已包装基类型“UIWindow”的成员“viewWithTag”
特此附上截图:
如何纠正这种情况?
解决方案
你已经用window!.makeKeyAndVisible()
. 所以,你可以在这里做同样的事情 -> window!.viewWithTag(1234)
。
还建议阅读https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html。您需要了解基本概念,以了解强制展开的含义以及何时可以安全使用。
推荐阅读
- swift - 华氏到摄氏转换和打印问题
- javascript - 如何避免其他选项卡中的数据在当前选项卡中可见
- react-native - 反应原生 EXPO / 在安装草图 npm 时都显示 RNSketch 错误
- python - 如何以交互方式将 XML 文件可视化为 python 中的树?
- django - Django - 在模型中使用 Reverse 的动态 URL 重定向问题
- javascript - 在使用 jquery 固定的位置上单击导航
- ruby - 如何使用 AWS Ruby SDK 从具有特定名称且超过 n 天的各种子文件夹的 S3 文件夹中删除所有对象
- android - 保存图像时,图像会旋转 90 度。使用 CameraX
- reactjs - 使用reactjs处理付款时如何禁用条带付款按钮?
- linux - 为什么在命令行选项中设置 IGNORECASE awk 变量的值时不能正常工作?