2016-09-23 82 views
1

我的项目包含几个管理表的视图控制器。这些控制器没有明确地符合UITableViewDelegate或UITableViewDataSource,而是UIViewController而不是UITableViewController的子类,但它仍然设法公开我从这些协议实现的表视图方法,例如tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat。这些视图控制器来自故事板,可能会做一些我不知道的幕后工作。这种魔法如何发生?这些协议的隐含符合来自哪里?UIViewController如何自动符合TableView协议?

回答

0

您可以在Storyboard中选择任何类作为UITableView委托。故事板不检查类是否确实符合某些协议。所以你不会收到编译时错误。在运行时UITableView也不检查它是否代表实现协议或不。相反,UITableView使用respondsToSelector来检查它是否代表需要方法。由于你的视图控制器 - 一切正常。