为什么TableViewController的很多方法只有名称tableView?

时间:2016-06-15 19:10:57

标签: ios swift uitableview

我目前正在学习Swift并且刚刚实现了我的第一张桌子。 要使用动态数据填充该表,必须实现从TableViewController扩展的类。

现在我想知道为什么有些配置方法只有名称tableView,例如:

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool

为什么Apple没有给他们这样的名字:

override func getNumberOfRowsInSection(tableView: UITableView, section: Int) -> Int
override func getCellForRowAtIndexPath(tableView: UITableView, indexPath: NSIndexPath) -> UITableViewCell
override func canEditRowAtIndexPath(tableView: UITableView, indexPath: NSIndexPath) -> Bool

我确定这是有正当理由的。

2 个答案:

答案 0 :(得分:4)

接受的答案是错误的。

由于这些方法是委托/数据源方法,因此可以将它们附加到多个表视图。因此,如果您的视图有两个表视图,则它们都可以具有与其数据源相同的方法。因此,需要引用调用该方法的tableview,因此您可以执行以下操作:

if tableView == myCoolYellowTableView { do stuff } 
else if tableView == myShittyBlueTable { do some other stuff }

答案 1 :(得分:-5)

我同意@beyowulf的答案,这在技术上是正确的。

Objective-C因其是一种不稳定/粗糙的语言而闻名。使用TableView,用户可以快速搜索与UITableViewController相关的每个方法,而不是输入function名称来挖掘一系列函数,以找到专门用于UITableViewController的函数}。

例如,如果您只需输入cellForItemAtIndexPath,就会找到UICollectionViewControllerUITableViewController的功能。但如果您先键入tableView,则只会找到UITableViewController的函数。

它更容易这样,因此他们为什么这样建造它。

希望能够解决它。