在UITableViewController中重写数据源和委托方法时,是否需要调用super?

时间:2015-10-05 08:56:28

标签: ios swift uitableview subclass

考虑以下从UITableViewController派生自定义视图控制器的代码段。

class Controller: UITableViewController {
    ...
)

// MARK: - Table View Data Source

extension Controller {

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // call super?
        ...
    }

}

// MARK: - Table View Delegate

extension Controller {

    override func tableView(tableView: UITableView, willBeginEditingRowAtIndexPath indexPath: NSIndexPath) {
        // call super?
        ...
    }

}

documentation说:

  

您可以覆盖loadView或任何其他超类方法,但如果确实要调用方法的超类实现,通常作为第一个方法调用。

我的问题是,这是否也适用于UITableViewDataSource符合的协议UITableViewDelegateUITableViewController中的方法?

在数据源方法中调用super对我来说没有多大意义,因为通常使用这些方法定义自己的内容。但是,我不确定委托方法。例如,在super中调用willBeginEditingRowAtIndexPath似乎没有任何明显的效果。

2 个答案:

答案 0 :(得分:0)

你是对的,在这种情况下做这件事并没有意义,也不是你应该做的事情。

答案 1 :(得分:0)

在这些情况下无需拨打超级电话。您在原始问题中包含的文档引用是指覆盖超类方法。但是,UITableViewDataSourceUITableViewDelegate是协议(而不是您的类'超类),并且您提到的方法特别为您声明,以最适合您的方式实现它们。