我遇到了投射视图控制器的问题。这是我的appdelegate中的代码片段:
InitViewController *initVC = (InitViewController *)self.window.rootViewController;
VMParentVC *topVC = (VMParentVC *) initVC;
[topVC navigateToMain];
我正在尝试做的是转换rootViewController,以便我可以使用我的VMParentVC类中的方法。但是当我这样做时,我得到了这个错误:
“[UINavigationController navigateToMain]:无法识别的选择器发送到实例”
不太确定我做错了什么。
答案 0 :(得分:5)
该错误意味着您在-navigateToMain
的实例上调用UINavigationController
,这不是您想要的。
这种情况可能正在发生,因为您的窗口的根视图控制器是UINavigationController
实例,您正在寻找的视图控制器是导航堆栈中的第一个视图控制器。如果是这种情况,您想要查看UINavigationController
中的第一个视图控制器:
UINavigationController *navigationController = (UINavigationController*)self.window.rootViewController;
*topVC = (VMParentVC *) navigationController.viewControllers[0];
[topVC navigateToMain];
在您从导航堆栈中提取视图控制器之后,检查视图控制器是否实际上是您认为应该是这样的类也更安全:
UINavigationController *navigationController = (UINavigationController*)self.window.rootViewController;
UIViewController * topVC = navigationController.viewControllers[0];
if ( [topVC isKindOfClass:([VMParentVC class])] ) {
[((VMParentVC *)topVC) navigateToMain];
}