在显示拆分视图控制器之前,我需要提供一个模态视图控制器。我需要这个,因为用户必须登录。
我已经阅读了这个论坛上的答案,建议模态视图控制器应该从AppDelegate中呈现,但在尝试这样做时,没有任何反应。
我在我的界面的其余部分所在的故事板中设置了我的视图控制器,并且我已经为视图控制器提供了标识符loginViewController
。我试图在AppDelegate中显示视图控制器,如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
UISplitViewController *splitViewController = (UISplitViewController *) self.window.rootViewController;
UINavigationController *navigationController = splitViewController.viewControllers.lastObject;
splitViewController.delegate = (id) navigationController.topViewController;
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
LoginViewController *lvc = (LoginViewController *) [storyboard instantiateViewControllerWithIdentifier:@"loginViewController"];
lvc.modalPresentationStyle = UIModalPresentationFullScreen;
[splitViewController presentModalViewController:lvc animated:YES];
}
[_window makeKeyAndVisible];
return YES;
}
当我这样做时,没有任何反应。没有错误,没有模态视图控制器,没有任何东西。该应用程序只显示我的拆分视图控制器。
在显示拆分视图控制器之前,有人能告诉我如何显示模态视图控制器吗?
答案 0 :(得分:6)
除非视图完全加载,否则viewcontroller将不允许在另一个视图控制器上推送/显示。
简单地说我们不允许在viewcontroller viewDidLoad / viewWillAppear中调用presentModalViewController / pushViewController。我们需要在viewDidAppear中调用它。
我说你遇到了同样的问题。
我可以说是一些解决方案,
在[self.window makeKeyAndVisible]之后加载LoginViewController;并且在performSelctor中(可能有延迟)。 移动代码以在SplitView的DetailView控制器viewDidAppear中显示LoginViewController。
感谢,
Naveen Shan
答案 1 :(得分:1)
而不是在AppDelegate.m中执行,而是在DetailViewController中执行此操作:
LogInViewController *logInVC = [[LogInViewController alloc] init];
[self presentModalViewController:logInVC animated:NO];
这适合我。