I have an open
BaseViewController
class in core framework that has tableview datasource methods implemented. Let's say I've another class (outside the module) ClassA
with BaseViewController
as it's superclass. When I try to override tableview datasource methods, it's throwing this error Overriding non-open instance method outside of its defining module
.
BaseViewController
looks like this
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()
}
}
ClassA
import CustomCoreFramework
class ClassA : BaseViewController {
// throws an error
public override func numberOfSections(in tableView: UITableView) -> Int {
return tableViewListItems.count
}
}
I suppose the open
class methods should be accessible outside the module. I tried changing the tableview methods access specifiers to public
and different combinations but nothing seems to work.
The BaseViewController’s methods should be declared open. This is discuss in the thread in reference.
See What is the 'open' keyword in Swift?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With