试图在Swift UIViewController子类中符合UITableViewDataSource和UITableViewDelegate .
class GameList: UIViewController {
var aTableView:UITableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
aTableView.delegate = self
aTableView.dataSource = self
self.view.addSubview(aTableView)
//errors on both lines for not conforming
}
}
文档说你应该遵循 :
之后的 class
行,但这通常是超类所在的地方 . 另一个 :
没有't work. Using a comma separated list after the superclass also doesn'工作
编辑:
答案如下 . class GameList: UIViewController, UITableViewDataSource, UITableViewDelegate {
还必须采用每个协议的所有必需方法,这是我最初没有做到的 .
6 回答
你用逗号:
但是要意识到超类必须是逗号分隔列表中的第一项 .
如果您未采用协议的所有必需方法,则会出现编译器错误 . 您必须获得所有必需的方法!
随着XCode6-Beta7的发布,
我注意到UITableViewDataSource的协议方法改变了一点点,听起来同样符合协议错误,这在beta6中运行良好 .
这些是根据UITableViewDataSource protocol实现的必需方法:
您可能希望重新检查差异或重新实现您认为刚刚实现的委托方法 .
您必须在此处实现两个require方法:
此外,从Delegate类复制所有非可选功能非常重要 . Cmd单击UITableViewDatasource并按原样复制这两个定义 .
对于beta7中的我来说,UITableViewDatasource有
我的实施:
使用这些方法:数据源方法有变化 -
Ur代码将有效!!
这个问题已经回答了,但只是想让事情变得更加敏捷 .
而不是在
UITableViewDelegate, UITableViewDataSource
中编写协议,你可以 divide them using extensions 这将有助于组织代码 . 添加协议一致性在page中描述对于上述问题,可以使用扩展名确认协议: