swift - tableView 功能说明
问题描述
我在学习UItableView时遇到了如下func:
func tableView(_ tableView: UITableView, ....
我从未遇到过在变量部分使用自己名称的函数。
谁能给我解释一下?
解决方案
在您的函数中,第一个tableView
是函数的名称,第二个是为其参数之一指定的名称。
一个简单的函数可以声明如下:
- 关键词
func
- 他给了函数的名字
- 左括号
(
- 参数名称(如果有),每个参数后跟冒号
:
,然后是它的类型,都用逗号分隔,
- 右括号
)
如果此函数返回一个值,则:
->
一个只是 a-和 a的箭头>- 返回类型
打开花括号
{
- 这是你的函数的主体
- 如果此函数返回一个值,则使用
return
关键字后跟要返回的值。
- 如果此函数返回一个值,则使用
- 最后是一个右大括号
}
这将定义此函数的签名:使另一个函数成为函数的原因是 - 它的名称, - 其参数的数量和名称及其类型, - 以及它的返回类型。
(我们可以添加它所属的对象,如果它抛出与否,......)
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
该参数更清晰的名称了。
推荐阅读
- python - 如何从具有不同索引的不同数据框中减去两个日期戳?
- laravel - laravel queue not working from custom class
- kubernetes - How to get node resource reserved/capacity in Kubernetes (kubelet flags/configuration)?
- metrics - 为什么我会在不同的时间范围内看到不同的仪表值?
- javascript - 通过谷歌登录AWS时反应本机时出错
- scala - How to publish scala module in sonatype and maven?
- r - 在 R 中使用 ggsignif 执行 t.test 时发现错误?
- wordpress - Visual Studio WordPress 编码标准
- putty - 删除putty“默认设置”修改为原来的
- angular - Angular localhost - 在 Internet Explorer 11 中找不到 URL