1

xcode 4.5.2 の master-detail テンプレートを使用しています。のままにしておくUINavigationControllerrootViewControllerではなくUIWindow、ビューとして単純なスプラッシュ スクリーンを備えた独自の ViewController に置き換えています。スプラッシュ画面が表示された後、 を(マスターと を含む)navigationControllerとしてプッシュしたいと思います。self.window.rootviewControllerdetailViewControllers

問題は、私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、スプラッシュ スクリーン付きのカスタム コントローラーです。では、ナビゲーション コントローラーを使用しているときにアプリ デリゲートから起動画面を変更するにはどうすればよいでしょうか。(マスター/ディテール テンプレート)

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 に答える