iOS开关rootViewController无法正常工作

Tyl*_*ser 1 uisplitviewcontroller ios rootview uistoryboard

我有一个登录视图,检查是否有默认设置,然后同步数据.如果没有默认设置,则视图等待用户登录.如果有设置和数据同步正确,它应切换到我的拆分视图.

如果用户输入其登录信息,则代码有效.它同步数据,然后切换视图.如果用户已登录,则会触发该功能并且不会切换视图.

以下是两个路径调用的代码:

-(void)redirect{
    NSLog(@"Redirect@");
    UISplitViewController *split = [self.storyboard instantiateViewControllerWithIdentifier:@"orders_split"];
    [self.view.window setRootViewController:split];
}
Run Code Online (Sandbox Code Playgroud)

如果用户已登录一次,"Redirect @"会在初始加载的日志中显示.我已经确认没有同步错误,它会触发该功能但不执行切换.

我正在从带有导航控制器的标准视图移动到splitview,所以我不能使用手动segue触发器.

Dmi*_*kin 13

尝试使用app delegate:

UISplitViewController *split = [self.storyboard instantiateViewControllerWithIdentifier:@"orders_split"];
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.window.rootViewController = split;
Run Code Online (Sandbox Code Playgroud)

在我的项目中,我用动画做到了:

+(void)setRootController:(UIViewController*)controller
              storyboard:(UIStoryboard*)storyboard{

            MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

            [UIView
             transitionWithView:appDelegate.window
             duration:0.5
             options:UIViewAnimationOptionTransitionCrossDissolve
             animations:^(void) {
                 BOOL oldState = [UIView areAnimationsEnabled];

                 [UIView setAnimationsEnabled:NO];

                 appDelegate.window.rootViewController = controller;

                 [UIView setAnimationsEnabled:oldState];
             }
             completion:nil];
}
Run Code Online (Sandbox Code Playgroud)