0

QuickDialog を使用してログイン フォームをプッシュしています。View Controllerを閉じることができないことを除いて、すべてが機能しています。このようなコード:

- (void)onLogin:(QButtonElement *)buttonElement
{
    [self loading:YES];
    Info *info = [[Info alloc] init];
    [self.root fetchValueUsingBindingsIntoObject:info];
    [self.client loginWithUsername:info.login password:info.password onSuccess:^(NSDictionary *result) {
        NSLog(@"user signed in");
        [self loading:NO];
        [self dismissViewControllerAnimated:YES completion:nil];
    } onFailure:^(NSError *error) {
        NSLog(@"login error");
    }];
}

そして、これらのコードを使用して、このView Controllerをプッシュしています

QRootElement *root = [[QRootElement alloc] initWithJSONFile:@"loginform"];
LoginController *loginController = (LoginController *)[QuickDialogController controllerForRoot:root];
[self.navigationController pushViewController:loginController animated:YES];
4

1 に答える 1

2

私はあなたにこれをするように言いたくなります:

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

Appleのドキュメントは次のとおりです。

提示するビューコントローラは、提示したビューコントローラを閉じる責任があります。ただし、提示されたView Controller自体でこのメソッドを呼び出すと、提示されたViewControllerにメッセージが自動的に転送されます。

とにかく、なぜあなたの電話が「転送」されて閉じられないのかわかりません。おそらくあなたはpresentModalViewController?その場合は、バランスを取り、dismissModalViewControllerAnimatedそれで修正される可能性があります。

もちろん、コードの残りの部分が正しく、NSLog(@"user signed in");サインインしたときに実際に印刷が表示されていることを前提としています。

幸運を!

>>更新<<

うわー、ごめんなさい。「ログインフォームをプッシュするQuickDialog」と書いたのに気づきましたが、この画面の表示方法の例を追加しました。これをnavコントローラースタックにプッシュしているので、ポップオフする必要があります。これで問題が解決します。

[self.navigationController popViewControllerAnimated:YES];

楽しみ。

于 2013-01-26T14:37:40.280 に答える