为定制的视图控制器覆盖非打开实例 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 方法。 一个开放的类将是可用的和子类的。同样,公共成员只能被其他模块使用,但不能被覆盖。一个开放的成员将是可用的和可覆盖的。

所以定义 animationControlleranimationController 在 ColorMatchTabsViewController 扩展中打开。默认他们定义为公共的。

【讨论】:

我该怎么做 那会去哪里。它是一个扩展 我需要定义主视图控制器。那会被定义为什么 航行我会做什么 我猜你需要定义 ColorMatchTabsViewController open 因为一个开放的类是可以子类化的。

以上是关于为定制的视图控制器覆盖非打开实例 swift的主要内容,如果未能解决你的问题,请参考以下文章

使用背景颜色“清除”推送新视图控制器

Xcode & Swift - 无法从 AppDelegate 实例化另一个视图控制器

Swift - 在 AppDelegate 中实例化视图控制器

Swift 3 - 实例化视图控制器后没有成员错误

Swift - 导航控制器没有杀死视图控制器实例

在 Swift 中使 NavigationBar 子视图可点击