У меня есть класс open
BaseViewController
в базовой структуре, в котором реализованы методы источника данных tableview. Допустим, у меня есть другой класс (вне модуля) ClassA
с BaseViewController
в качестве суперкласса. Когда я пытаюсь переопределить методы источника данных tableview, он выдает эту ошибку Overriding non-open instance method outside of its defining module
.
BaseViewController
выглядит так
open class BaseViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
...
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 0
}
public func numberOfSections(in tableView: UITableView) -> Int {
return 0
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return UITableViewCell()
}
}
Класс А
import CustomCoreFramework
class ClassA : BaseViewController {
// throws an error
public override func numberOfSections(in tableView: UITableView) -> Int {
return tableViewListItems.count
}
}
Я полагаю, что методы класса open
должны быть доступны вне модуля. Я попытался изменить спецификаторы доступа к методам таблицы на public
и другие комбинации, но, похоже, ничего не работает.
BaseViewController
— как следует из названия — от UIViewController, а не отUITableViewDelegate
- person vadian   schedule 18.08.2017