1

我正在使用 xcode 4.5.2 的主从模板。我没有将其保留UINavigationControllerrootViewControllerUIWindow而是用我自己的 ViewController 替换它,并用一个简单的闪屏作为它的视图。显示初始屏幕后,我想将navigationControlleras self.window.rootviewController(包含 master 和detailViewControllers)推送。

问题是虽然我ViewController正在初始化并且它viewDidLoad被调用但它的视图(启动屏幕没有显示)。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)

{LoginViewController *loginViewController = [[[LoginViewController alloc] initWithNibName:@"LoginViewController_iPhone" bundle:nil] autorelease];
//        loginViewController.masterViewController = loginViewController;

          [self.window setRootViewController:loginViewController];
          [self.window addSubview:loginViewController.view];

if (BOOL condition is YES)
{
 MasterViewController *masterViewController = [[[MasterViewController alloc] initWithNibName:@"MasterViewController_iPhone" bundle:nil] autorelease];
        self.navigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease];
        //self.window.rootViewController = self.navigationController;
}

LoginViewController是带有闪屏的自定义控制器。那么如何在使用导航控制器时从 App 委托更改启动屏幕?(主从模板)

4

1 回答 1

0

这可能不是这样做的方法。您应该保持主从结构原样(作为窗口的根视图控制器),并在应用程序首次启动时将启动屏幕显示为模态视图控制器。只需在主视图控制器的 viewDidLoad 方法中使用 presentViewController:animated: 呈现您的 LoginViewController。

编辑后:如果您想按照您尝试的方式进行操作,那么您拥有的代码几乎是正确的。可以使用以下代码从登录控制器(而不是应用程序委托)完成:

if (BOOL condition is YES) {
     MasterViewController *masterViewController = [[[MasterViewController alloc] initWithNibName:@"MasterViewController_iPhone" bundle:nil] autorelease];
     UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease];
     self.view.window.rootViewController = navigationController;
}
于 2012-12-01T17:06:36.460 回答