我们如何在我们的类中继承UITableViewDataSource协议?

5

在此输入图片描述

我想在我的应用程序中使用表格视图。但是当我将我的视图控制器确认为UITableViewDataSource时,它会出现图片中显示的错误。我们如何在我们的类中使用UITableViewDataSource协议。

2个回答

3
这不是指定协议一致性的正确方式。这是正确的语法。
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    // stuff
}

如果你仍然看到这个错误,那是因为你的类没有实现这些委托所需的方法,在本例中,需要实现numberOfRowsInSection和cellForRowAtIndexPath。

@Rahul 这是另一个原因。我向您展示的是使您的类符合协议的正确方法,但现在,您看到该错误是因为您的类没有实现这些委托所需的方法,在这种情况下,包括 numberOfRowsInSection.... 和 cellForRowAtIndexPath....。 - Mick MacCallum
谢谢您的建议。但是在使用方法之前,我们首先要继承协议。在确认协议之前,您能够访问委托方法吗? - Rajesh Maurya
1
@Rahul 不,不通过自动完成。 - Mick MacCallum

2

我建议使用类扩展来符合协议,这种隔离使得你的代码在类成长后更易于维护,例如:

class MainViewController: UIViewController {

   // ...

}

你可以使用协议来扩展它

extension MainViewController: UITableViewDataSource {

    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
        return 0
    }

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
        return nil
    }

    // ... 

}

并且
extension MainViewController: UITableViewDelegate {

    // ...

}

但在这种情况下,我应该在哪里设置tableview.delegate = self? - Maria
这取决于您在哪里声明了您的插座。 - holex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接