0

ユーザーが現在認証されているかどうかを確認するView Controllerがあります。そうでない場合は、ログイン ビュー コントローラーをモーダルに表示します。

-(void)showLoginView{
    UIStoryboard *storyBoard = [self storyboard];
    LoginViewController *loginViewController  = [storyBoard instantiateViewControllerWithIdentifier:@"LoginViewController"];
    loginViewController.parentController = self;
    [self presentViewController:loginViewController animated:NO completion:nil];
}

ユーザーが認証されたら、モーダルログインビューコントローラーを閉じたいのですが、何らかの理由で親ビューコントローラーがモーダルコントローラーへの参照を失いました。ログイン ビュー コントローラーは、Facebook SDK を使用してセッションを開くプロセスを開始します。Facebook は、ユーザー認証のために独自の Web ビューを開きます。これは責任を負うことができますか?

-(void)loginSuccess{
    [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}

ユーザーが正常に認証されると、モーダル ログイン ビューは親ビュー コントローラーで上記のメソッドを呼び出します。ただし、self.presentingViewController は nil です。したがって、モーダル ビューが閉じられることはありません。誰かが私がここで間違っていることを教えてもらえますか?

ありがとう!

4

1 に答える 1

0

おい!私はダムです。私はこれを試していました:

-(void)loginSuccess{
    [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}

これは次のようにする必要があります:

-(void)loginSuccess{
    [self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
}

「presentingViewController」と「presentedViewController」の違いに注意してください。

于 2013-11-11T04:43:17.483 に答える