iOS开关rootViewController无法正常工作

时间:2013-08-19 19:57:09

标签: ios uisplitviewcontroller uistoryboard rootview

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

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

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

-(void)redirect{
    NSLog(@"Redirect@");
    UISplitViewController *split = [self.storyboard instantiateViewControllerWithIdentifier:@"orders_split"];
    [self.view.window setRootViewController:split];
}
如果用户已登录一次,

“Redirect @”会在初始加载的日志中显示。我已经确认没有同步错误,它会命中该功能但不执行切换。

我正在从使用导航控制器的标准视图转移到splitview,因此我无法使用手动segue触发器。

1 个答案:

答案 0 :(得分:13)

尝试使用app delegate:

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

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

+(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];
}