Рассмотрим следующий фрагмент, который выводит пользовательский контроллер вида от UITableViewController
.Нужно ли мне переводить супер при переопределении источника данных и делегировать методы в 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?
...
}
}
The documentation говорит:
Вы можете переопределить loadView или любой другой метод суперкласса, но если вы убедитесь, что для вызова суперкласса реализации метода, как правило, в качестве первого вызова метода.
Мой вопрос, означает ли это также к методам в протоколах UITableViewDataSource
и UITableViewDelegate
, на который UITableViewController
соответствует?
Вызов super
в методах источника данных не имеет для меня большого смысла, поскольку обычно вы определяете свой собственный контент, используя эти методы. Однако я не уверен в методах делегатов. Вызов super
в willBeginEditingRowAtIndexPath
например, похоже, не имеет никакого очевидного эффекта.
Но не являются ли методы методов суперкласса методов протокола ('UITableViewController')? Поскольку суперкласс (и только по наследованию является подклассом) является тем, что соответствует протоколам ('UITableViewDelegate' и' UITableViewDataSource'). В противном случае вам не понадобится ключевое слово 'override' при переопределении методов в пользовательском подклассе. – ma11hew28