Swift 使用UIViewController作为可选参数的默认值,但我得到;X没有名为“Y”的成员;错误

Swift 使用UIViewController作为可选参数的默认值,但我得到;X没有名为“Y”的成员;错误,swift,default-value,optional-parameters,Swift,Default Value,Optional Parameters,所以我一直在享受默认参数值的乐趣 class containerViewController: UIViewController { var detailView:UIViewController? override func viewDidLoad(){ super.viewDidLoad() detailView = anotherViewController() } func hideDetailView(vc:UIVie

所以我一直在享受默认参数值的乐趣

class containerViewController: UIViewController {
    var detailView:UIViewController?

    override func viewDidLoad(){
        super.viewDidLoad()
        detailView = anotherViewController()
    }

    func hideDetailView(vc:UIViewController? = detailView){ // <- THIS LINE
        // code
    }
}
我一直在网上阅读,但我似乎不知道如何解决这个问题

我想要的是能够使用
hideDetailView()
,如果我将特定视图控制器作为参数发送给该函数,它将隐藏该特定视图控制器。如果我不发送任何参数,它只会隐藏保存在
detailView
参数中的当前视图控制器


如何实现这一点?

您可以使用
nil
作为默认值,并检查正文中是否有
nil

func hideDetailView(vc:UIViewController? = nil){ // <- THIS LINE
    let vc_ = vc ?? detailView
    // code
}
func hideDetailView(vc:UIViewController? = nil){ // <- THIS LINE
    let vc_ = vc ?? detailView
    // code
}
// passing `nil` as Optional<UIViewController>
let vc:UIViewController? = nil
container.hideDetailView(vc: vc)

// use default value
container.hideDetailView()
func hideDetailView(vc:UIViewController?? = nil){
    let vc_ /*: UIViewController? */ = vc ?? detailView 
    // code
}