如何调用表视图控制器中的函数?

时间:2015-07-19 20:28:43

标签: ios swift tableview

我是使用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!
}

1 个答案:

答案 0 :(得分:2)

  

我无法看到这些函数何时或如何被调用。

UITableView会在delegatedataSource上调用这些方法,以获取有关应显示内容的信息,并在发生某些操作时进行通信。对于UITableViewController,控制器本身既是委托又是数据源。因此,除非在其中设置断点,否则不会看到调用这些方法。

  

当用户导航到视图时是否调用它们?如果是这样,怎么样?

当用户导航到视图时,UITableViewController的默认实现将表视图的委托和数据源属性设置为self。表视图本身在需要信息来适当地创建,调整大小,布局和显示表单元格时,会懒惰地调用这些方法。

  

为什么这些不同的功能都有相同的名称? I.e func tableView ()

他们没有。在Swift和Objective-C中,参数名称是方法名称的一部分。例如,这种方法:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return 80
}

的名称为tableView(_:heightForRowAtIndexPath:)