ios - 在 switch case 语句中获取 segue.destination 作为 View Controller

标签 ios swift

是否有可能以这样的方式编写以下 switch 语句,即“let dentViewController”部分发生在“switch segue.destination”或“case is DamageTypeDentViewController:”行上?

(我觉得我正在对“case is”和“let dentViewController = segue.destination as”做双重工作)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    switch segue.destination {
    case is DamageTypeDentViewController:
        let dentViewController = segue.destination as? DamageTypeDentViewController
        dentViewController.doSomething()

    default:
        return
    }

}

最佳答案

是的

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    switch segue.destination {
    case let dentViewController as DamageTypeDentViewController:
        dentViewController.doSomething()

    default:
        return
    }
}

如果只有一种情况需要检查你可以这样写

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if case let dentViewController as DamageTypeDentViewController = segue.destination {
        dentViewController.doSomething()
    }
}

或者更简单

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if let dentViewController = segue.destination as? DamageTypeDentViewController {
        dentViewController.doSomething()
    }
}

关于ios - 在 switch case 语句中获取 segue.destination 作为 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57460965/

相关文章:

ios - UIImagePickerController编辑 View 圈叠加

swift - Firebase Swift .exist() 不工作

ios - 适用于 iOS 的 Google map API - 不显示标记

ios - 代码 7 : AWS S3 Header file not found using Cocoa Pods

ios - SKAudioNode 定位音频似乎不起作用

ios - 父 View 中的状态更改创建子 ViewModel 的新实例

ios - SwiftUI 在没有按钮的情况下询问通知权限

ios - Things 3 如何为状态栏文本着色

ios - [NSURL initFileURLWithPath :]: nil string parameter with ARC

ios - 是否可以在SKEmitterNode上应用过滤器?