Ipad 加载UISplitView后以模式显示视图的问题

Ipad 加载UISplitView后以模式显示视图的问题,ipad,ios5,modal-dialog,uisplitviewcontroller,Ipad,Ios5,Modal Dialog,Uisplitviewcontroller,我是UISplitView开发的新手,所以我确信有一些明显的地方我做错了。我有一个基本的UISplitView iPad应用程序,当应用程序启动时,它会加载两个UITableView控制器。这个很好用 我试图做的是在启动后立即执行,以模态方式呈现“身份验证”视图,以便用户在继续之前需要登录。这是我到目前为止所拥有的代码,它编译和工作时不会中断,但是视图没有显示出来 - (BOOL)application:(UIApplication *)application didFinishLaunchin

我是UISplitView开发的新手,所以我确信有一些明显的地方我做错了。我有一个基本的UISplitView iPad应用程序,当应用程序启动时,它会加载两个UITableView控制器。这个很好用

我试图做的是在启动后立即执行,以模态方式呈现“身份验证”视图,以便用户在继续之前需要登录。这是我到目前为止所拥有的代码,它编译和工作时不会中断,但是视图没有显示出来

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

  MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
  UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];

  DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
  UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

  self.splitViewController = [[UISplitViewController alloc] init];
  self.splitViewController.delegate = detailViewController;
  self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil];

  masterViewController.detailViewController = detailViewController;
  masterViewController.managedObjectContext = self.managedObjectContext;

  self.window.rootViewController = self.splitViewController;
  [self presentAuthenticate];
  [self.window makeKeyAndVisible];

  applicationDidLaunch = YES;
  return applicationDidLaunch;
}

- (void) presentAuthenticate {
  AuthenticateViewController *loginController = [[AuthenticateViewController alloc] initWithNibName:@"AuthenticateViewController" bundle:nil];
  [loginController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
  [loginController setModalPresentationStyle:UIModalPresentationFormSheet];

  if ([self.splitViewController respondsToSelector:@selector(presentViewController:animated:completion:)]) {
      [self.splitViewController presentViewController:loginController animated:NO completion:nil];
  } else {
      [self.splitViewController presentModalViewController:loginController animated:NO]; //iOS 4 works fine with or without animation   
  } 
}
我将AuthenticateViewController定义为一个包含几个文本字段的视图,并将其连接到文件的所有者视图


提前谢谢

除非视图加载完成,否则viewcontroller将不允许在另一个视图上推送/显示

简单地说,我们不允许在viewcontroller视图中调用presentModalViewController/pushViewController。加载/视图将出现。我们需要在视图中调用它

我和你说的问题一样

我能说的一些解决办法是

  • 在[self.window makeKeyAndVisible]之后加载AuthenticateViewController;在执行器中(可能有延迟)
  • 移动代码以在SplitView的DetailView控制器ViewDidDisplay中显示AuthenticateViewController
  • 谢谢

    纳文山