目前,我正在尝试从场景中调用现有的UINavigationController方法。 我的故事板看起来像:
- > UINavigationController的 - (RootViewController的) - >视图控制器 - >场景
我需要帮助了解如何从场景中调用现有的UINavigationController自定义方法showGameCenterMenu()。这就是我到目前为止所做的:
UINavigationController * navRef = self.view.window.rootViewController.navigationController; [navController performSelector:@selector(showGameCenterMenu)];
我理解我的方法调用可能不正确,但是理解这一点以及我是否通过直接引用这个来打破最佳实践会有所帮助......
答案 0 :(得分:2)
将指针转移到自定义导航控制器类,然后调用其方法。
答案 1 :(得分:2)
如果导航控制器是根视图控制器,那么你导航太远(所以你可能得到nil
),你应该有:
UINavigationController *navRef = (UINavigationController *)self.view.window.rootViewController;
(使用来自UIViewController
的演员)
答案 2 :(得分:0)
在评论中的伟大人物的帮助下,我找到了合适的解决方案.. (NavigationViewController是我的自定义UINavigationController类);
NavigationViewController * navRef =(NavigationViewController *)self.view.window.rootViewController; [navRef showGameCenterMenu];
这允许我向我的NavigationViewController发送一个方法调用,它通过在其后面添加.topViewController来显示现有View Controller上方的一层Game Center菜单。再次感谢你们:)