繁体   English   中英

在Swift中投射从UINavigationController中提取的viewController

[英]Casting a viewController extracted from an UINavigationController in Swift

我在UINavigationControllerUIViewController 该视图控制器实现协议。

我正在尝试获取导航堆栈的第一个控制器并将其强制转换为:

if let vc = _navigationStack.viewControllers?[0] as? ExplorerInterface {
    return vc
}

但我收到错误消息: Cannot downcast from 'AnyObject?' to non-@objc protocol type 'ExplorerInterface' Cannot downcast from 'AnyObject?' to non-@objc protocol type 'ExplorerInterface'

我正在寻找一种在不将@objc关键字添加到我的协议的情况下解决此问题的方法(因为该协议包含诸如元组之类的swift类型,并且@objc关键字与Swift类型不兼容)

形成苹果文件:

仅当您的协议标记有@objc属性时,才可以检查协议一致性。 即使您不与Objective-C互操作,如果您希望能够检查协议一致性,也需要使用@objc属性标记协议。

检查Swift协议

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM