比较 UIViewController 实例
Comparing UIViewController instances
我正在构建一个带有自定义标签栏的应用程序。其中一个按钮不会 select 相应的视图控制器,而是会触发一些自定义代码(例如模态打开)。
我将 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
}
为了更安全,见
第二个(使其正确):删除不需要的括号,这显然会给编译器带来问题:
if viewController == self.viewControllers![2] {
return false
}
这样您实际上会收到更有用的错误消息:
Cannot subscript a value of type '[UIViewController]?' with an index of type 'Int'
这会给你更好的提示是哪里出了问题。
我正在构建一个带有自定义标签栏的应用程序。其中一个按钮不会 select 相应的视图控制器,而是会触发一些自定义代码(例如模态打开)。
我将 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
}
为了更安全,见
第二个(使其正确):删除不需要的括号,这显然会给编译器带来问题:
if viewController == self.viewControllers![2] {
return false
}
这样您实际上会收到更有用的错误消息:
Cannot subscript a value of type '[UIViewController]?' with an index of type 'Int'
这会给你更好的提示是哪里出了问题。