2015-07-19 36 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

非常感謝。 –

相關問題