我正在尝试遍历我的UITabBarController管理的控制器,对于其中包含UINavigationControllers的选项卡,请查看导航堆栈中当前有多少viewControllers。不幸的是,虽然控制器声称是UINavigationControllers,并且它们的viewControllers属性看起来像是一个数组,但它并没有像我期望的那样响应“count”:
for ( UIViewController *controller in tabBarController.viewControllers ) {
if ( [controller isKindOfClass:[UINavigationController class]] ) {
UINavigationController *navigationController = (UINavigationController*)controller;
NSLog(@"Analyzing controller: %@", controller.title);
NSLog(@"Views in hierarchy: %@", [navigationController.viewControllers count]);
} else {
....
}
}
当我尝试将计数消息发送到navigationController.viewControllers时,我在“层次结构中的视图:”行中收到EXC_BAD_ACCESS错误。
我在这里感到困惑,并且会喜欢任何人都可以提供的任何帮助。提前谢谢!
答案 0 :(得分:4)
您使用%@
格式说明符打印出-count
的结果,该结果返回NSUInteger
。 %@
仅适用于打印对象,因此即使您只提供一个整数,它也会期待一个对象。你必须做这样的事情:
NSLog(@"Views in hierarchy: %lu",
(unsigned long)[navigationController.viewControllers count]);