0

ユーザーがアプリを初めて起動したときにのみ表示される 1 回限りの契約ビューがあります。

ストーリーボード IOS 5.1 を使用しており、ルートビューはナビゲーション ビュー コントローラーです。私の契約ビューは、ナビゲーションコントローラーとは関係ありません。モーダルビューポップアップを表示して、ビューを閉じたいだけです: ここに画像の説明を入力

私は次のコードを使用しますが、アプリは何もしません。フラグを立ててナビゲーションビューコントローラーを起動します。はい、アプリは if ステートメントに入ります。:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
       if(login==ok){
       UIStoryboard *storyboard = [UIApplication sharedApplication].delegate.window.rootViewController.storyboard;
        UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"AgreementViewController"];
        [self.window.rootViewController presentModalViewController:loginController animated:YES];
        }
return YES;

}

ストーリーボードに接続されていないビューコントローラーを切り替えて閉じるにはどうすればよいですか?

4

1 に答える 1

2

先週末に取り組んでいたアプリでも、同様の状況がありました。ガイド付きセットアップで初めて別のストーリーボードを表示したかったのです。私のコードはあなたのものとほとんど同じに見え、デバッグ中に警告が表示されました。これは、1 回限りの ViewController を表示しようとしていた rootViewController が、この時点ではアプリに表示されていないためです。

そこで、rootViewController の「上」にワンタイム ビュー コントローラーを表示する代わりに、ワンタイム ビュー コントローラーを rootViewController として設定することにしました。あなたの場合、それは次のようになります:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if(login == ok) {
        UIStoryboard *storyboard = [UIApplication sharedApplication].delegate.window.rootViewController.storyboard;
        UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"AgreementViewController"];
        [self.window setRootViewController:loginController];
    }

    return YES;
}

それを却下するには、おそらく、1回限りのView Controllerから最初のView Controllerにセグエを追加するか、質問のようなコードを使用できます。

別のアプローチは、AppDelegate ではなく、最初の「通常の」ビューの viewDidAppear でチェックとビューの切り替えを行うことです。

うまくいけば、これはあなたを正しい方向に向けるでしょう。

于 2012-10-01T10:19:04.100 に答える