【问题标题】:Casting a viewController extracted from an UINavigationController in Swift在 Swift 中转换从 UINavigationController 中提取的 viewController
【发布时间】:2014-07-25 12:03:03
【问题描述】:

我在UINavigationController 中有UIViewController。这个视图控制器实现了一个协议。

我正在尝试获取导航堆栈的第一个控制器并对其进行转换:

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

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

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

【问题讨论】:

    标签: ios objective-c uinavigationcontroller swift


    【解决方案1】:

    形成 Apple Doc:

    只有在您的协议被标记的情况下,您才能检查协议的一致性 带有@objc 属性。即使您不与 Objective-C,你需要用 @objc 属性标记你的协议 如果您希望能够检查协议一致性。

    查看Swift Protocols

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 2011-12-26
      • 2014-12-07
      • 2014-09-29
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多