2016-09-23 43 views
1

我的項目包含幾個管理表的視圖控制器。這些控制器沒有明確地符合UITableViewDelegate或UITableViewDataSource,而是UIViewController而不是UITableViewController的子類,但它仍然設法公開我從這些協議實現的表視圖方法,例如tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat。這些視圖控制器來自故事板,可能會做一些我不知道的幕後工作。這種魔法如何發生?這些協議的隱含符合來自哪裏?UIViewController如何自動符合TableView協議?

回答

0

您可以在Storyboard中選擇任何類作爲UITableView委託。故事板不檢查類是否確實符合某些協議。所以你不會收到編譯時錯誤。在運行時UITableView也不檢查它是否代表實現協議或不。相反,UITableView使用respondsToSelector來檢查它是否代表需要方法。由於你的視圖控制器 - 一切正常。