0

そんなビューからモーダルビューを開こうとしているのですが、

SignupViewController *signUpView = [[SignupViewController alloc] initWithNibName:@"SignupViewController" bundle:nil];
[signUpView setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
self.parentViewController.view.transform = CGAffineTransformMakeScale(1.3, 1.3);
self.parentViewController.view.alpha = 0;
[UIView animateWithDuration:.35 animations:^{self.parentViewController.view.alpha  = 1.0; self.parentViewController.view.transform = CGAffineTransformMakeScale(1, 1);}];
[self presentModalViewController:signUpView animated:YES]; 

ログイン後、モーダルビューを閉じて別のビューにリダイレクトしていますが、親ビューはまだそこにあります。

[self dismissViewControllerAnimated:YES completion:^{
ToolsViewController *gototoolpage = [[ToolsViewController alloc] initWithNibName:@"ToolsViewController" bundle:nil];
[self.navigationController pushViewController:gototoolpage animated:YES];
}

親ビューを閉じる方法も。何か案が

4

1 に答える 1

0

あなたのコードは少し混乱しているように見えます。あなたはparentViewControllerへの参照によって何を意図していますか? ドキュメントを確認してください。これは、以前または現在のviewControllerではなく、含まれているviewControllerです。NavigationController コンテキストでは、これは UINavigationController になります。モーダル ビュー コンテキストには、parentViewController はありませんが、提示するViewController があります。self.parentViewController へのこれらすべての呼び出しで、あなたが何を意図しているのかわかりません。

いずれにせよ、pushViewController メッセージがどこからどこに渡されているかが完全に明確になるように、デリゲートを介して提示元の viewController に却下リクエストを送信する必要があります。

signUpViewController のヘッダー ファイルで、プロトコルを宣言します。

@protocol SignUpViewControllerDelegate
- (void) dissmissSignUpVC;
@end

その後、presentingViewControllerで、

SignupViewController *signUpView = [[SignupViewController alloc] initWithNibName:@"SignupViewController" bundle:nil];

追加

[signUpView setDelegate:self];

完了ブロックにあるのと同じコードでデリゲート メソッドを実装します。

- (void) dissmissSignUpVC {

    ToolsViewController *gototoolpage = [[ToolsViewController alloc] 
            initWithNibName:@"ToolsViewController" bundle:nil];
    [self.navigationController pushViewController:gototoolpage animated:YES];

}

signUpView で、デリゲートのメソッドを呼び出して却下します。

[[self delegate] dissmissSignUpVC];

これらの積み重ねられたアニメーションに気をつけてください。最初のアニメーションだけが実行されると思います (つまり、gototollpage animated:YES.gototoolpage animated:NO

いずれにしても、ロジックを再考する必要があります。このような viewController の内部操作を行うと、ユーザーが混乱する可能性があると思います。ユーザーがどこにいるかを理解できるように、ユーザーが toolsViewController に移動するための UI コントロールがある方がよいでしょうか?

于 2012-12-19T11:58:12.010 に答える