ios - View Controller only 协议(protocol)无权访问 View Controller 属性

标签 ios swift

我有一个只有 UIViewController 的协议(protocol)

protocol VCProtocol where Self: UIViewController {}

我有一个带有 VCProtocol 参数的函数。在函数内部我无法访问 UIViewController

的任何属性
func testFunction(vcProtocol: VCProtocol) {
    // vcProtocol.view  ‼️ error: Value of type 'VCProtocol' has no member 'view'
}

尽管我可以将协议(protocol)参数转换为 UIViewController,然后像这样访问该属性:

func testFunction(vcProtocol: VCProtocol) {
    (vcProtocol as! UIViewController).view
}

是这样吗?我们有更好的方法吗?

最佳答案

您可以使用& 运算符来组合协议(protocol)

protocol VCProtocol where Self: UIViewController {}

func testFunction(vcProtocol: VCProtocol & UIViewController) {
    let view = vcProtocol.view
}

关于ios - View Controller only 协议(protocol)无权访问 View Controller 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55292679/

相关文章:

ios - xamarin iOS 中的后台线程在 3 分钟后自动结束

ios - 从应用商店下载的应用无法运行,但可以在 xcode 中运行

ios - OCMockito 是否在 verify() 调用后重置调用计数?

ios - SpriteKit 中没有任何内容出现在场景中

初始化函数中的 Swift 嵌套类型

ios - JSON解析数据没有被调用? swift

iphone - 如何检测设备 token 是否已过时?

ios - 如何在 Swift 3 中解析来自 URL 的 JSON 数据

ios - Alamofire 对象映射器 : how to parse nested array in swift

ios - Swift - 函数内部函数?