This question already has answers here:
Type 'ViewController' does not conform to protocol 'UITableViewDataSource'
(17个答案)
3个月前关闭。
我在我的项目中使用了UITableView,但在我的类中没有numberOfRowsInSection,但是类给出了这个错误。类型“ViewController”不符合协议“UITableViewDataSource”。是否要添加协议存根?如何解决这个问题?

最佳答案

UITableViewDataSource协议下,有一些函数提供默认值。
例如,方法optional func numberOfSections(in tableView: UITableView) -> Int是可选的,它提供返回1的默认实现。
但是,该协议包含两个非可选的方法,必须加以实现。他们是:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int

以及
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

下面是这些函数的提示:
class ViewController: UIViewController {
    private let data = [0, 1, 2, 3, 4]
}

extension ViewController: UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return tableView.dequeueReusableCell(withIdentifier: "identifier", for: indexPath)
    }
}

以下是该议定书的正式文件:
https://developer.apple.com/documentation/uikit/uitableviewdatasource

关于ios - (numberOfRowsInSection)'类型'ViewController'不符合协议(protocol)'UITableViewDataSource',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57643402/

10-12 04:22