Reputation: 149
I have a custom made view controller and I'm trying to add functions for a UIviewControllerTransitioningDelegate on a custom view controller, and I'm having trouble. Here is the code. I'm getting an "overriding non-open instance method outside of its dining module error" at "open override func animationController(forPresented" and "open override func animationController(forDismissed". Heres an image of the error.
import UIKit
import ColorMatchTabs
class MainPageViewController: ColorMatchTabsViewController {
@IBOutlet weak var ShoppingCart: TKTransitionSubmitButton!
@IBOutlet weak var Settings: TKTransitionSubmitButton!
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.font = UIFont.navigationTitleFont()
// to hide bottom button remove the following line
popoverViewController = MainPopOverViewController()
popoverViewController?.delegate = self
dataSource = self
reloadData()
}
@IBAction func SettingsButton(_ button: TKTransitionSubmitButton) {
button.animate(0, completion: { () -> () in
let secondVC = SettingsViewController()
secondVC.transitioningDelegate = self
self.present(secondVC, animated: true, completion: nil)
})
}
@IBAction func ShoppingCartButton(_ button: TKTransitionSubmitButton) {
button.animate(0, completion: { () -> () in
})
}
open override func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return TKFadeInAnimator(transitionDuration: 0.5, startingAlpha: 0.8)
}
open override func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return nil
}
}
extension MainPageViewController: ColorMatchTabsViewControllerDataSource {
func numberOfItems(inController controller: ColorMatchTabsViewController) -> Int {
return TabItemsProvider.items.count
}
func tabsViewController(_ controller: ColorMatchTabsViewController, viewControllerAt index: Int) -> UIViewController {
return StubContentViewControllersProvider.viewControllers[index]
}
func tabsViewController(_ controller: ColorMatchTabsViewController, titleAt index: Int) -> String {
return TabItemsProvider.items[index].title
}
func tabsViewController(_ controller: ColorMatchTabsViewController, iconAt index: Int) -> UIImage {
return TabItemsProvider.items[index].normalImage
}
func tabsViewController(_ controller: ColorMatchTabsViewController, hightlightedIconAt index: Int) -> UIImage {
return TabItemsProvider.items[index].highlightedImage
}
func tabsViewController(_ controller: ColorMatchTabsViewController, tintColorAt index: Int) -> UIColor {
return TabItemsProvider.items[index].tintColor
}
}
extension MainPageViewController: PopoverViewControllerDelegate {
func popoverViewController(_ popoverViewController: PopoverViewController, didSelectItemAt index: Int) {
selectItem(at: index)
}
}
Upvotes: 0
Views: 5321
Reputation: 9226
Define ColorMatchTabsViewController
methods with open
.
A open class will be both usable and subclassable. Similarly, a public member will only be usable by other modules, but not overridable. An open member will be both usable and overridable.
so define animationController
and animationController
open in ColorMatchTabsViewController extension. Default they defined as public.
Upvotes: 3