2013-12-18 36 views
0

iPad邮件应用程序中没有帐户设置时,它会打开邮件客户端进行选择?选择邮件客户端后,视图控制器将以模态方式关闭,并显示UISplitViewController如何显示ViewController,然后将其解除以显示UISplitViewController?

我想要在iPad应用程序上工作,在那里我必须首先显示ViewController并将其解除以显示UISpiltViewController。我想知道,它是如何完成的。

我只能通过将其设置为rootView控制器来午餐UISplitViewController。这里是我的代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 



    PopViewController * menuVC = [[PopViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
    UINavigationController * navMenue = [[UINavigationController alloc] initWithRootViewController:menuVC]; 

    DetialViewController *delainVC =[[DetialViewController alloc] init]; 
    UINavigationController * navdetail = [[UINavigationController alloc] initWithRootViewController:delainVC]; 

    UISplitViewController *splitVC = [[UISplitViewController alloc] init]; 
    splitVC.viewControllers = [NSArray arrayWithObjects:navMenue,navdetail, nil]; 


    self.window.rootViewController = splitVC; 
    self.window.backgroundColor = [UIColor whiteColor]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

我知道你必须总是设置UISplitViewController为您RootViewController的。但我的目标是在UISplitViewController之前打开一个ViewController。完全像iPad邮件应用程序,当没有帐户设置。

+1

已经登录我认为你是正确的。设置根视图控制器后,决定是否要将模态视图控制器置于其上。 –

+0

我的确在它上面打开了一个模态视图控制器。它看起来很奇怪,因为我可以在模态视图打开之前看到SplitViewController。 –

回答

2

自 - (无效)viewDidAppear - (无效)viewDidLoad中之前被调用。同时在视图中没有动画的情况下打开模态视图控制器也没有加载方法。解决了这个问题。并没有UISplitViewcontroller的一瞥。以下是代码。此代码应放置在detailview控制器中。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self checkLogIn]; 

} 

写了一个函数来检查,如果用户在

-(void) checkLogIn{ 

    if(notLoggedIn){ 
     ViewController * VC = [[ViewController alloc] init]; 
     [self presentViewController:VC animated:NO completion:nil]; 
    } 

} 
+1

很高兴知道这适用于分割视图控制器。这不是一个通用的解决方案 - 如果你从标签栏控制器(或独立控制器)中的第一个标签控制器尝试这样做,你会得到一个错误(试图在上呈现其视图不在窗口层次中!)。它可以在导航控制器的根视图控制器上工作。 – rdelmar

+0

@rdelmar它只是一个示例项目。上述代码也适用于作为导航控制器的根视图控制器。我不知道上述解决方案是否是最好的,但它按预期工作。我想看看是否有其他解决方案。 –

1

如果您从详细视图控制器的viewDidAppear方法(不带动画)中显示模态视图控制器,它将是您首先看到的。动画(BOOL):例如,

-(void)viewDidAppear:(BOOL)animated { 
    if (notLoggedIn) { 
     UIViewController *modal = [self.storyboard instantiateViewControllerWithIdentifier:@"Blue"]; 
     [self presentViewController:modal animated:NO completion:nil]; 
    } 
} 
+0

感谢您的回答。在加载模式视图控制器之前,我仍然可以看到UISplivewController的一瞥。我发现我做错了什么。我用动画打开了模态视图控制器。我会投票答复你的答案。但为了将来的参考,我会发布的答案,运作良好。 –

+0

@RedDevil,你看到模拟器或设备上的“一瞥”。我也没有看到。 – rdelmar

+0

是的,我确实看到了一眼。由于 - (无效)viewDidLoad之前调用 - (void)viewDidAppear:(布尔)动画..将代码放在viewdidload解决了问题 –

相关问题