目前,我想要一个单独的数据类。但是,我不能只声明这样的类:
class DataSource: UITableViewDataSource
这会给我带来很多错误。而且,我必须这样做:
class DataSource: UIViewController, UITableViewDataSource
那么,为什么?我来自Java背景,所以我不明白为什么我必须实现A来实现B.我试着阅读Apple的官方文档,但我找不到答案。
编辑:这是错误:
Type 'DataSource' does not conform to protocol 'UITableViewDataSource'
Type 'DataSource' does not conform to protocol 'NSObjectProtocol'
并且,XCode建议解决它的方法是在覆盖函数的开头添加“@objc”。修复后仍然存在错误。
编辑2:我知道我需要实现2个函数才能使数据源正常工作。但是,如果没有实现UIViewController,它将无法工作。
添加UIViewController后会起作用!
答案 0 :(得分:1)
协议UITableViewDataSource
来自NSObjectProtocol
。因此,您必须使您的类继承自NSObject以符合NSObjectProtocol
。 Vanilla Swift课程没有。但UIKit的许多部分都期望NSObjects。您必须实现此协议所需的方法。请尝试以下代码:
class DataSource: NSObject, UITableViewDataSource {
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return UITableViewCell()
}
}