【问题标题】:Having a Swift class act as both a UIViewController subclass and a UITableViewDelegate让 Swift 类同时充当 UIViewController 子类和 UITableViewDelegate
【发布时间】:2014-07-11 04:53:56
【问题描述】:

我一直在用 Swift 编写一个应用程序,因此需要编写一个既是 UIViewController 的子类又符合多种协议(包括 UIAlertViewDelegateUITableViewDelegateUITableViewDataSource)的类。我目前正在使用 Xcode 6 Beta,遇到了很多困难。

我遇到的问题源于类声明:

class TableAddition :  UIViewController, UIAlertViewDelegate  { 

编译器似乎无法识别协议,当我尝试实现以下方法时:

@optional func alertView(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int) {

}

我收到一条错误消息,提示“‘可选’属性只能应用于协议成员”。尽管删除 @optional 可以消除错误,但我不认为该方法被识别为 UIAlertViewDelegate 协议的成员(Xcode 从未为我自动完成该方法实现)。

这是源于 Swift 方面的问题,还是我的错误?

【问题讨论】:

    标签: ios uiviewcontroller swift protocols


    【解决方案1】:

    来自 Swift Book 中的"Protocols"

    可选协议要求

    您可以定义协议的可选要求,这些要求 不必由符合协议的类型实现。 可选要求以 @optional 关键字为前缀,作为 协议的定义。

    所以@optional关键字只用在协议定义中来标记 可选要求。它不与协议方法的实现一起使用。 因此,在您的代码中删除 @optional 是正确的解决方案。

    Xcode 没有自动完成协议方法似乎是当前的一个问题 测试版。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 2014-11-09
      相关资源
      最近更新 更多