如何调用表视图控制器中的函数?
我是使用Swift开发iOS的新手。如何调用表视图控制器中的函数?
我想了解如何在控制表视图的视图控制器中调用函数。
在我看的例子中,视图控制器运行三个函数,都称为'table view',每个函数做一些独特的事情,例如返回一个部分有多少行,或者使用可重用的单元格。
但我只是看不到这些函数何时或如何被调用。
当用户导航到视图时它们是否被调用?如果是这样,怎么样?那么这些不同的功能如何都具有相同的名称(即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!
}
我只是不明白的时候还是这些函数的调用。
一个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:)
。
谢谢@Aaron。我仍然在黑暗中。你说过“UITableView在其委托或数据源上调用这些方法”和“表视图本身懒惰地调用这些方法”。我的问题是:这些事情是如何发生的? UITableView如何调用这些方法?这是什么内置到UITableView类?任何帮助,将不胜感激。 –
是的,它内置于UITableView类。 –
非常感谢。 –
您可以添加一个链接到您正在查看的示例吗? – gaborous
我没有链接,对不起。这些例子都在一本书中。 –
我已经添加了一些示例代码来说明。 –