【发布时间】:2015-03-20 18:57:10
【问题描述】:
我在 AppDelegate 的 application:didFinishLaunching 方法中加载 LaunchViewController 作为根视图控制器:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"LaunchViewController" bundle:nil];
LaunchViewController *launchViewController = [storyboard instantiateInitialViewController];
launchViewController.managedObjectContext = [CurrentSession mainQueueContext];
self.window.rootViewController = launchViewController;
[self.window makeKeyAndVisible];
LaunchViewController 与 Web 服务器通信以获取一些数据。我正在使用 AFNetworking 库与 Web 服务器进行异步通信。在获取数据后的成功回调中,我展示了 LoginViewController。我的理解是 AFNetworking 的回调是在主线程上执行的。尽管如此,我还是使用performSelectionOnMainThread 来看看这是否能解决问题:
内部回调:
[self performSelectorOnMainThread:@selector(presentLoginView) withObject:nil waitUntilDone:NO];
presentLoginView方法:
- (void)presentLoginView {
LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
loginViewController.managedObjectContext = self.managedObjectContext;
[self presentViewController:loginViewController animated:YES completion:nil];
}
登录视图未显示,在控制台中我看到以下消息:
Warning: Attempt to present <LoginViewController: 0x78e47c30> on <LaunchViewController: 0x78eb4a60> whose view is not in the window hierarchy!
:-(
更新 我在 LoginViewController 的 viewDidLoad、viewDidUnload、viewWillAppear 和 viewDidAppear 方法中设置了断点。 viewDidLoad 被击中。其他人则没有。 为什么视图会加载但不显示?
【问题讨论】:
-
我遇到了同样的问题,但我只是忽略了它,它仍然可以正常工作。
-
哦。我想知道在我的情况下发生了什么,因为没有显示登录视图。我之前确实重命名了我的 LoginViewController 的 xib 文件。在代码中,我使用了新的 xib 名称,并确保新的 xib 名称处于目标构建阶段。不知道还能做什么。郁闷。
-
请问您为什么使用 .xibs?
-
这是一个旧代码库。
-
哦,好吧,我帮不了你,但我会等到其他人这样做:D
标签: ios