首页 > 解决方案 > tableView 功能说明

问题描述

我在学习UItableView时遇到了如下func:

func tableView(_ tableView: UITableView, ....

我从未遇到过在变量部分使用自己名称的函数。

谁能给我解释一下?

标签: swifttableview

解决方案


在您的函数中,第一个tableView是函数的名称,第二个是为其参数之一指定的名称。

一个简单的函数可以声明如下:

  1. 关键词func
  2. 他给了函数的名字
  3. 左括号(
  4. 参数名称(如果有),每个参数后跟冒号:,然后是它的类型,都用逗号分隔,
  5. 右括号)
  6. 如果此函数返回一个值,则:

    • ->一个只是 a-和 a的箭头>
    • 返回类型
  7. 打开花括号{

  8. 这是你的函数的主体
    • 如果此函数返回一个值,则使用return关键字后跟要返回的值。
  9. 最后是一个右大括号}

这将定义此函数的签名:使另一个函数成为函数的原因是 - 它的名称, - 其参数的数量和名称及其类型, - 以及它的返回类型。

(我们可以添加它所属的对象,如果它抛出与否,......)

String这是一个接受 a并返回另一个的函数的示例。你可以在 Xcode 的操场上尝试一下:

//Declare the function
func sayHiTo(person: String) -> String {
    let greeting = "Hello " + person
    return greeting
}
//Invoke it
sayHiTo(person: "Sara")     //"Hello Sara"

你能看到我们是如何在最后一行调用函数的sayHiTo(person: "Sara")吗?要调用函数,请按照下列步骤操作:

  • 输入函数的名称(与2.上一个列表相同)
  • 左括号(
  • 参数名称(如果有),每个参数后跟冒号:,然后是其类型。

_如果我们想在不声明名称参数的情况下调用函数,我们可以在参数名称之前使用:

func laugh(_ s: String) -> String {
    return s + s
}

laugh("Ha")   //HaHa

如果参数的名称与函数的名称相同,则不会出错:

func name(name: String) {
    print(name)
}

name(name: "Katie")  //prints Katie in the console

现在,让我们看一下这个函数签名:

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

如你看到的,

  • tableView是函数的名称
  • 第二个tableView是它的第一个参数的名字
  • 下划线_表示调用此函数时无需提及参数名称
  • UITableView是第一个参数的类型
  • cellForRowAt是第二个参数的外部名称
  • indexPath是第二个参数的内部名称
  • IndexPath是第二个参数的类型
  • -> UITableViewCell表示这个函数返回一个类型的实例UITableViewCell

你可能会问一个问题:为什么要使用同名的函数和参数?答案是:

  • 这是所有数据源在UITableViewDataSource. 它更容易记住,并且使用 Xcode 自动完成功能更加方便。

  • 另外,参考您正在使用的 tableView 确实很有帮助,并且没有比tableView该参数更清晰的名称了。


推荐阅读