让Swift类充当UIViewController子类和UITableViewDelegate

时间:2014-07-11 04:53:57

标签: ios uiviewcontroller swift protocols

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

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

class TableAddition :  UIViewController, UIAlertViewDelegate  { 

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

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

}

我收到错误消息“'可选'属性只能应用于协议成员”。虽然删除@optional会使错误无效,但我不认为该方法被识别为UIAlertViewDelegate协议的成员(Xcode从未为我自动完成方法实现)。

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

1 个答案:

答案 0 :(得分:5)

来自Swift Book中的"Protocols"

  

可选协议要求

     

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

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

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