2015-07-19 64 views
-1

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

您可以添加一个链接到您正在查看的示例吗? – gaborous

+0

我没有链接,对不起。这些例子都在一本书中。 –

+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:)

+0

谢谢@Aaron。我仍然在黑暗中。你说过“UITableView在其委托或数据源上调用这些方法”和“表视图本身懒惰地调用这些方法”。我的问题是:这些事情是如何发生的? UITableView如何调用这些方法?这是什么内置到UITableView类?任何帮助,将不胜感激。 –

+0

是的,它内置于UITableView类。 –

+0

非常感谢。 –

相关问题