为了帮助你, UIViewController 是一个你正在继承的类。它不是一个协议,因此它没有任何必要的方法供您实现。但是,您可以覆盖您继承的方法,这是您第一次创建文件时看到的,例如。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
这会覆盖您从 UIViewController 继承的方法。如果您除了调用之外什么都不做,super.viewDidLoad()
您可以从代码中删除整个函数。
现在 UITableViewDataSource 和 UITableViewDelegate 或两个协议,所以他们可能有也可能没有需要的方法来实现。
您在 alt-click 时描述的内容与您右键单击 UITableViewDataSource 并选择跳转到定义时相同。这是您在实际的 Mac 上单击命令时得到的结果。本教程所说的是,所需的方法将位于顶部,如果您查看文档,情况并非总是如此(因为这些方法是按目的组织的)。在 UITableViewDataSource 的情况下,您应该会看到如下内容:
protocol UITableViewDataSource : NSObjectProtocol {
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
optional func numberOfSectionsInTableView(tableView: UITableView) -> Int // Default is 1 if not implemented
optional func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? // fixed font style. use custom view (UILabel) if you want something different
optional func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String?
您会注意到前两种方法func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
并func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
没有可选的。这意味着这些是该协议所需的方法。下面的可选的是可选的。
在 UITableViewDelegate 的情况下,您会看到没有非可选方法,因此它不需要您实现任何方法。