我是使用Swift的iOS开发新手。
我试图了解如何在控制表视图的视图控制器中调用函数。
在我看到的示例中,视图控制器运行三个函数,所有函数都称为“表视图”,并且每个函数都执行一些独特的操作,例如返回节中的行数或使用可重用单元格。
但我无法看到这些函数何时或如何被调用。
当用户导航到视图时是否调用它们?如果是这样,怎么样?为什么这些不同的功能都具有相同的名称(即func tableView ()
)?
以下是一些示例代码:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dwarves.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier(simpleTableIdentifier)
as? UITableViewCell
if (cell == nil) {
cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: simpleTableIdentifier)
}
cell!.textLabel.text = dwarves[indexPath.row]
cell!.textLabel.font = UIFont .boldSystemFontOfSize(15)
return cell!
}
答案 0 :(得分:2)
我无法看到这些函数何时或如何被调用。
UITableView
会在delegate
或dataSource
上调用这些方法,以获取有关应显示内容的信息,并在发生某些操作时进行通信。对于UITableViewController
,控制器本身既是委托又是数据源。因此,除非在其中设置断点,否则不会看到调用这些方法。
当用户导航到视图时是否调用它们?如果是这样,怎么样?
当用户导航到视图时,UITableViewController
的默认实现将表视图的委托和数据源属性设置为self
。表视图本身在需要信息来适当地创建,调整大小,布局和显示表单元格时,会懒惰地调用这些方法。
为什么这些不同的功能都有相同的名称? I.e
func tableView ()
他们没有。在Swift和Objective-C中,参数名称是方法名称的一部分。例如,这种方法:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 80
}
的名称为tableView(_:heightForRowAtIndexPath:)
。