ios - 比较 UIViewController 实例

标签 ios xcode swift uiviewcontroller uistoryboard

我正在构建一个带有自定义标签栏的应用程序。其中一个按钮不会选择相应的 View Controller ,而是会触发一些自定义代码(例如模态打开)。

我将 UITabBarController 子类化如下:

import UIKit

class MyTabBarController: UITabBarController, UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        delegate = self
    }

    func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
        if (viewController == self.viewControllers[2]) {
            return false
        }

        return true
    }
}

但是,比较viewController == self.viewControllers[2]好像不行。我收到以下错误:

Could not find an overload for == that accepts the supplied arguments

作为 Swift 的新手,我找不到任何 Material 来解释如何比较对象的特定实例,或者这是否是正确的方法。

如何更改此代码以使其正常工作?

最佳答案

首先(让它工作):打开self.viewControllers:

if (viewController == self.viewControllers![2]) {
    return false
}

为了更安全,请参阅 this answer

第二(使其正确):删除不需要的括号,这显然会给编译器带来问题:

if viewController == self.viewControllers![2] {
    return false
}

这样您实际上会收到更有用的错误消息:

Cannot subscript a value of type '[UIViewController]?' with an index of type 'Int'

这会给你更好的提示是哪里出了问题。

关于ios - 比较 UIViewController 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31500412/

相关文章:

ios - 修改正在运行的 SKAction 的速度

ios - YTPlayerView自定义按钮开始停止

ios - UITableViewCell 错误 : this class is not key value coding-compliant

ios - 在cocos2d中制作一个Drawable层

iphone - 在 Xcode 中更改版权 "Organization"

ios - 我应该重命名图像文件以加快访问速度/减少内存吗?

ios - 为什么我的表格 View 中的单元格不显示任何文本?

ios - Swift - 填充表行

swift - 如何从另一个正则表达式中取反或减去一个正则表达式导致只有一行正则表达式

Swift 4.1 取消初始化和解除分配(容量 :) deprecated