例如,如果我写作:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
tableView
,_tableView: UITableView
和didSelectRowAt indexPath: IndexPath
各自所指的内容是什么?
答案 0 :(得分:1)
请参阅Swift Language: Functions and Closures,其中包含:
功能和闭包
使用
func
声明一个函数。通过在括号中使用参数列表跟随其名称来调用函数。使用->
将参数名称和类型与函数的返回类型分开。func greet(person: String, day: String) -> String { return "Hello \(person), today is \(day)." } greet(person: "Bob", day: "Tuesday")
默认情况下,函数使用其参数名作为其参数的标签。在参数名称前写一个自定义参数标签,或者写
_
以不使用参数标签。func greet(_ person: String, on day: String) -> String { return "Hello \(person), today is \(day)." } greet("John", on: "Wednesday")
所以,你的问题就像后一个例子。因此,当操作系统调用此委托方法时,它会调用它:
delegate.tableView(someTableView, didSelectRowAt: someIndexPath)
但你从不称这种方法。这是一种UITableViewDelegate
方法,您永远不会称之为自己。您实现此方法,当用户从表中选择一行时,iOS将调用它。
答案 1 :(得分:0)
第一个tableView
是方法名称。然后,括号内是参数,用逗号分隔。每个参数都有三个部分:外部名称,内部名称和类型。如果您希望调用者能够省略外部名称(代码调用方法所使用的参数的名称),则可以用下划线(_)替换它。因此,第一个参数的内部名称为tableView
,没有外部名称。冒号(:)之后的部分是类型,第一个参数的类型为UITableView
。第二个参数的外部名称为didSelectRowAt
,内部名称为indexPath
,类型为IndexPath
。