Мне нужно представить контроллер модального представления перед отображением контроллера с разделенным изображением. Мне нужно это, потому что пользователь должен будет войти в систему.UISplitViewController не будет отображать контроллер модального вида
Я прочитал ответы на этом форуме, предлагая, чтобы контроллер модального представления был представлен из 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;
}
Когда я это делаю, ничего не происходит. Нет ошибок, нет контроллера модального представления, нет ничего. Приложение просто показывает мой контроллер разделенного вида.
Может ли кто-нибудь сказать мне, как я могу показать контроллер модального представления, прежде чем показывать контроллер разделенного вида?
Вызов '[_window makeKeyAndVisible]' перед представлением контроллера модального представления в AppDelegate сделал трюк. Не нужно было делать 'performSelector' или делать это с задержкой. Спасибо за помощь. – simonbs
ya вы правы @SimonBS, но лучше использовать performSelector, потому что если приложение не запустится через 5 секунд, он будет убит таймером сторожевого таймера. –