我正在尝试从self.navigationController.viewControllers
检查视图控制器列表。
NSMutableArray *arrayOfControllers = [[NSMutableArray alloc] initWithObjects:self.navigationController.viewControllers, nil];
作为示例,这将返回如下数组:
array -- (
(
"<HomeViewController: 0xb1aca10>",
"<LeftMenuViewController: 0xe751520>"
)
)
我现在需要检查数组中是否存在HomeViewController我该怎么做?
我曾尝试[arrayOfControllers containsObject:[MESHomeViewController class]])
,但这不会返回true。
答案 0 :(得分:7)
遍历所有视图控制器并检查视图控制器是否为[MESHomeViewController class]
。您不需要MESHomeViewController的实例来使用此方法。
for (UIViewController *vc in arrayOfControllers) {
if ([vc isKindOfClass:[MESHomeViewController class]]) {
//It exists
}
答案 1 :(得分:1)
containsObject
要求您传递特定实例,而不仅仅是您要查找的类的类型。如果您有对特定MESHomeViewController的引用,请将其作为参数传递给containsObject:
。
答案 2 :(得分:1)
[arrayOfControllers containsObject:[MESHomeViewController class]]
无效,因为指向控制器的指针位于数组中,而不是控制器的类名。
你应该可以简单地做
[arrayOfControllers containsObject:self] // if inside MESHomeVIewController
[arrayOfControllers containsObject:myHomeViewController] //The instance of MESHomeViewController
编辑:
如果您不想分配要检查的类,可以使用isKindOfClass:检查或改为创建一个包含类名而不是实际实例的数组
答案 3 :(得分:0)
您可以使用循环并使用isKindOfClass: