正在实现表功能所需的 UITableViewDataSource 协议

Posted

技术标签:

【中文标题】正在实现表功能所需的 UITableViewDataSource 协议【英文标题】:Is implementing the UITableViewDataSource protocol required for table functionality 【发布时间】:2015-04-01 14:34:28 【问题描述】:

我用声明创建了一个类

class LessonDetailsViewController: UIViewController @IBOutlet var detailsTable: UITableView!

我可以填充表格中的内容并通过实现 正确的 tableView 函数。

但我没有实现定义所有这些功能的 UITableViewDataSource 协议。有人可以向我解释一下我缺少什么使这成为可能的关键概念吗? ios怎么知道调用这个类的这些方法没有实现UITableViewDataSource协议?

【问题讨论】:

【参考方案1】:

你必须要实现UITableview dataSource和delegate方法所需的方法。

(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

【讨论】:

【参考方案2】:

你的类绝对应该从这个协议中实现必要的方法。这足以让表视图工作,因为即使您没有声明您的类实现了此协议,您的类也可以执行表视图委托方法。在您的情况下,表格视图调用您的类以获取一些数据并且不检查它是否conformsToProtocol,只是发送类似tableView:numberOfRowsInSection:的消息。

【讨论】:

非常感谢迈克!正如我清楚地理解的那样,视图盲目地在控制器上寻找方法来调用它是否实现协议。我肯定看到了实现协议是如何更清洁、更易读的,但是如果没有在类上定义这个协议,功能会“不起作用”吗?希望这是有道理的。【参考方案3】:

好的,我将尝试解释如何连接您的 tableView,但我将使用 Swift

现在你有了这个:

class LessonDetailsViewController: UIViewController  @IBOutlet var detailsTable: UITableView! 

你必须让这个视图控制器适应两个必要的协议,tableView 才能工作

所以添加 UITableViewDelegate 和 UITableViewDataSource

所以现在代码是这样的

   class LessonDetailsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource  @IBOutlet var detailsTable: UITableView! 

如果您正确进行更改,则会收到错误 LessonDetailsViewController 不舒适........ 。这是因为 UITableViewDataSource 有两个必须实现的功能。两种协议都有很多,但它们是可选的。

第一个功能是女巫描述每个人的样子。

func tableView(_ tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

第二个是女巫告诉tableView要显示多少行。

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

最后你必须连接 tableView。

override func viewDidLoad() 
        super.viewDidLoad()
        detailsTable.delegate = self
        detailsTable.dataSource = self
    

协议通常定义了一些功能,但没有实现它们。所以在源代码中 tableView 正在使用这个函数,但你必须先实现它们。通过在 UIViewController 旁边添加 UITableViewDataSource,您基本上可以告诉系统 LessonDetailsViewController 将实现 tableView 需要的这些功能

【讨论】:

以上是关于正在实现表功能所需的 UITableViewDataSource 协议的主要内容,如果未能解决你的问题,请参考以下文章

如何使用已定义的表获取我所需的记录

连接所需的 HQL 路径(连接同一个表时)

错误 3014 (HY000):发现表存储引擎“NDBCLUSTER”缺少所需的创建选项

vba——清空整张表用于初始化

对联结表实现感到困惑

BigQuery Connected Sheets - 所需的用户权限?