tabelView功能说明

时间:2018-09-10 17:01:08

标签: swift tableview

在学习UItableView时,我遇到了以下功能:

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

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

有人可以向我解释吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

    • 箭头->,它只是->
    • 返回类型
  7. 打开大括号{

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

这将定义此功能的 签名 :从另一个功能中构成一个功能的原因是  - 它的名字,  -参数的数量和名称及其类型,  -及其返回类型。

(我们可以添加它所属的对象,无论是否抛出,……)

这是一个使用String并返回另一个函数的示例。您可以在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.相同)
  • 左括号(
  • 参数名称(如果有的话),每个参数名称后跟冒号:,然后是其类型。

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

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清晰。

相关问题