我有一个带参数的函数vcType:UIViewController.Type我正在尝试进行检查
for (int i = 1; i < 10; i++)
{
field[i] = i+48;
}
但我错了“vcType不是一个类型”。我不确定问题是什么,或者是否有更好的方法来做到这一点。
答案 0 :(得分:3)
尝试更换:
getTopmostViewController() is vcType
使用:
getTopmostViewController().dynamicType == vcType
编辑:
这只会检查确切的类型。如果getTopmostViewController()
返回的控制器是vcType的后代,则会返回false
。
答案 1 :(得分:2)
也许你想要这样的东西:
if getTopmostViewController().isKindOfClass(vcType.dynamicType) {
// do stuff
}
上面,vcType
是某个类的实例,它正在检查getTopmostViewController()
是否返回同一个类(或子类)的实例。
或许你真的想写一个这样的函数:
func doStuffIfTopMostViewControllerHasType<VCType: UIViewController>(_: VCType.Type) {
if getTopmostViewController() is VCType {
// do stuff
}
}
然后你会这样打电话:
doStuffIfTopMostViewControllerHasType(MyViewController.self)
请注意,我正在传递MyViewController
类本身,不是 MyViewController
的实例。