Ios 如何从content ViewController显示UIViewController?

Ios 如何从content ViewController显示UIViewController?,ios,objective-c,viewcontroller,Ios,Objective C,Viewcontroller,我从其他VC的组合中得到了包含的menuVC,其中一个是loginViewController,如何从menuVC转到loginViewController?或者这是从方法加载VC的最佳方法?我的代码: MenuViewController * menuViewController = [storyboard instantiateViewControllerWithIdentifier:@"MenuViewController"]; [menuViewController presentVi

我从其他VC的组合中得到了包含的menuVC,其中一个是loginViewController,如何从menuVC转到loginViewController?或者这是从方法加载VC的最佳方法?我的代码:

MenuViewController * menuViewController = [storyboard instantiateViewControllerWithIdentifier:@"MenuViewController"];
 [menuViewController presentViewController:menuViewController.loginViewController animated:YES completion:nil];
我可以这样做:

UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MenuViewController * menuViewController = [storyboard instantiateViewControllerWithIdentifier:@"MenuViewController"];
[menuViewController showLoginViewController];

错误提示:警告:试图显示其视图不在窗口层次结构中的对象

当应用程序尚未显示在视图中时,您无法以模式显示视图控制器。您可以在菜单“视图控制器”的“视图显示”方法中显示它。您必须在ViewDidDisplay中执行此操作,而不是在viewDidLoad或ViewWillDisplay中执行此操作,因为您在其上显示的视图不在当前窗口层次结构中,基本上与您在应用程序代理中执行此操作时遇到的问题相同。如果你想在应用程序启动时显示它,只需选择“设置动画”为“否”。如果你需要更多帮助,请告诉我。

你必须导航到其中一个。因此,如果我想在所有应用程序运行时使用menuVC并从它加载其他VC,我该怎么办?如果您试图最初在菜单视图控制器顶部显示登录屏幕,只要在登录后以这种方式在菜单视图控制器中记录一个布尔值,将其设置为true,以便视图控制器不会在每次显示视图时都显示。内部菜单视图控制器调用[self.view presentViewController:loginViewController动画:无完成:无];在ViewDidDisplay中,它将首先在运行时显示。我使用了这种方法,但现在我仅在用户未保存在Keychain中时从AppDelegate运行loginVC,如果用户注销,则从menuVC运行loginVC。我需要一些架构方面的帮助,我的应用程序将包含一个menuVC、其他VC和一些非VC类。我想运行所有的VC从菜单VC或与它委托的方法,也若并没有这样的VC在菜单中,我会运行它从menuVC。我说的对吗?那真的不是问题。只需创建一个全局布尔值,就像我之前在您的menuVC和ApplicationIDFinishLaunching内的应用程序委托中所说的那样,只需将布尔值(isLoggedIn)设置为“是”不显示它,将其设置为“否”。在应用程序代理内部,将在调用menuVC的ViewDidDisplay之前调用ApplicationDiFinishLaunching。