tableView:numberOfRowsInSection:无法识别的选择器发送到实例错误

问题描述

我有这个烦人的问题。我搜了很多很多人建议了很多事情。 就像添加了这些 TableViewDataSource TableViewDelegate 一样;

class SalesNewViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource,UITableViewDelegate,UITableViewDataSource

连接参考插座;

enter image description here

并通过代码连接数据源和委托;

TableView.dataSource = self
TableView.delegate = self

我在尝试performSegue时遇到此错误,而没有 performSegue (例如,如果我想通过单击 TableViewCell 来打印 hello 进行控制台>)它不会给出任何错误

func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "SalesSegue",sender: self)
}

即时通讯将相同的东西用于另一个View,它可以正常工作。任何帮助都将非常可爱。

编辑1:我有两种运行所需的方法 numberOfRowsInSection cellForRowAt

解决方法

如果您在Xcode帮助系统中搜索“ UITableViewDataSource”,则会获得有关该协议的文章。它说:

Only two methods of this protocol are required,and they are shown in the following example code.

// Return the number of rows for the table.     
override func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
   return 0
}

// Provide a cell object for each row.
override func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   // Fetch a cell of the appropriate type.
   let cell = tableView.dequeueReusableCell(withIdentifier: "cellTypeIdentifier",for: indexPath)
   
   // Configure the cell’s contents.
   cell.textLabel!.text = "Cell text"
       
   return cell
}

您谈论的是连接事物,但没有提及实现这些方法。

假设视图控制器是表视图的数据源,则视图控制器至少需要实现这两种方法(numberOfRows(inSection:)cellForRow(at:))。

您可以将它们放置在视图控制器的主体中,也可以将其包含在为UITableViewDataSource协议提供协议一致性的扩展中。

(请注意,numberOfRows(inSection:)由苹果提供的示例代码将导致表视图为空。您需要将return 0位替换为返回您的表格视图,无论对您的应用程序意味着什么。)