如何显示ViewController,然后将其关闭以显示UISplitViewController?

时间:2013-12-18 15:30:25

标签: ios iphone objective-c ipad

如果iPad邮件应用中没有设置帐户,它会打开邮件客户端进行选择吗?选择邮件客户端后,视图控制器将以模态方式关闭,并显示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邮件应用完全相同。

2 个答案:

答案 0 :(得分:2)

因为 - (void)viewDidLoad之前被调用 - (void)viewDidAppear:(BOOL)动画。在视图中打开没有动画的模态视图控制器时执行加载方法。解决了这个问题。而且没有UISplitView控制器的一瞥。下面是代码。此代码应放在detailview控制器中。

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

}

编写了一个函数来检查用户是否已登录

-(void) checkLogIn{

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

}

答案 1 :(得分:1)

如果从详细视图控制器的viewDidAppear方法中显示模态视图控制器(没有动画),那么它将是您看到的第一个。例如,

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