转换从Swift中的UINavigationController中提取的viewController

时间:2014-07-25 12:03:04

标签: ios objective-c uinavigationcontroller swift

我在UIViewController中有UINavigationController。该视图控制器实现协议。

我正在尝试获取导航堆栈的第一个控制器并进行投射:

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

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

我正在寻找一种解决此问题的方法,而无需在我的协议中添加@objc关键字(因为此协议包含像元组一样的swift类型,@objc关键字与Swift类型不兼容)

1 个答案:

答案 0 :(得分:3)

表格Apple Doc:

  

只有标记了协议,才能检查协议一致性   使用@objc属性。即使你没有与之互操作   Objective-C,您需要使用@objc属性标记协议   如果您希望能够检查协议一致性。

检查Swift Protocols