首页 > 解决方案 > 可选类型“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”

特此附上截图:

错误截图

如何纠正这种情况?

标签: iosswiftuiwindow

解决方案


你已经用window!.makeKeyAndVisible(). 所以,你可以在这里做同样的事情 -> window!.viewWithTag(1234)

还建议阅读https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html。您需要了解基本概念,以了解强制展开的含义以及何时可以安全使用。


推荐阅读