为定制的视图控制器覆盖非打开实例 swift
Posted
技术标签:
【中文标题】为定制的视图控制器覆盖非打开实例 swift【英文标题】:Overriding non-open instance swift for a custom made view controller 【发布时间】:2016-12-24 19:07:34 【问题描述】:我有一个定制的视图控制器,我正在尝试在自定义视图控制器上为 UIviewControllerTransitioningDelegate 添加功能,但遇到了麻烦。这是代码。我在“打开覆盖函数动画控制器(forPresented”和“打开覆盖函数动画控制器(forDismissed”)处收到“覆盖其餐饮模块错误之外的覆盖非打开实例方法”。这是错误的图像。
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)
【问题讨论】:
【参考方案1】:用open
定义ColorMatchTabsViewController
方法。
一个开放的类将是可用的和子类的。同样,公共成员只能被其他模块使用,但不能被覆盖。一个开放的成员将是可用的和可覆盖的。
所以定义 animationController
和 animationController
在 ColorMatchTabsViewController 扩展中打开。默认他们定义为公共的。
【讨论】:
我该怎么做 那会去哪里。它是一个扩展 我需要定义主视图控制器。那会被定义为什么 航行我会做什么 我猜你需要定义 ColorMatchTabsViewController open 因为一个开放的类是可以子类化的。以上是关于为定制的视图控制器覆盖非打开实例 swift的主要内容,如果未能解决你的问题,请参考以下文章
Xcode & Swift - 无法从 AppDelegate 实例化另一个视图控制器