Ios 警告“;尝试显示其视图不在窗口层次结构中的ViewController-目标C
我试图调用一个控制器,如果有响应错误,并将用户重定向到登录控制器Ios 警告“;尝试显示其视图不在窗口层次结构中的ViewController-目标C,ios,objective-c,Ios,Objective C,我试图调用一个控制器,如果有响应错误,并将用户重定向到登录控制器 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"EventManagerStoryboard" bundle:[NSBundle mainBundle]]; LoginViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"loginI
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"EventManagerStoryboard" bundle:[NSBundle mainBundle]];
LoginViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"loginID"];
[loginController viewDidLoad];
loginController.showOnlyLoginForm = YES;
[self presentViewController:loginController animated:YES completion:Nil];
我面对这个警告-
尝试显示尝试在ProfileController:0x7fc9583118e0(其视图不在窗口层次结构中)上显示LoginViewController:0x7fc958201130
不要在viewDidLoad中运行此代码在ViewDidDisplay中尝试
[self presentViewController:loginController animated:YES completion:Nil];
编辑:
如果实现navigationController,请在appDelegate中使用
[(UINavigationController *)self.window.rootViewController pushViewController:vc animated:YES];
实际上,我正在ConnectionIDFinishLoadingDoes ProfileController中运行,或者在您实现ConnectionIDFinishLoadingI的位置,在我的应用程序代理上实现ConnectionIDFinishLoading。当出现响应者错误时,我会强制用户注销。您可以实施导航控制器来完成此操作,因为appDelegate中没有viewController来显示您的登录,或者使用通知中心/代理通知另一个viewController来显示您的登录,而不是appDelegate,但您的日志标识您要显示它在名为ProfileController的viewController中,即使是自存在的。。。。将不会在应用程序代理中运行我建议使用“loadViewIfNeeded”而不是直接调用
viewDidLoad
Callback您不应该自己调用viewDidLoad
查看控制器的视图时会自动调用它loaded@MilanNos没有区别。我的便条是关于打电话给viewDidLoad
,它不应该解决您的问题。不管怎么说,错误消息是非常不言自明的。当未显示self
时,将调用您的代码,因此self
无法显示其他视图控制器。但是如果没有更多的背景,没有人能更好地帮助你。可能会有几十个或数百个原因导致这种情况发生,但在没有看到其余代码的情况下,我们只能猜测。。换句话说,您显示的代码是正确的,问题在于代码的其余部分。