didFinishWithResultでモーダルビューコントローラーを提示することは可能ですか?
ホーム、スタート、ログインの3つのビューを持つiPadアプリケーションがあります。開始およびログイン モーダル ビューは、ホーム ビューの開始およびログイン ボタンを使用して起動できます。
ログイン ボタンをクリックすると、ログイン ビューでログイン操作 (didFinishWithResult) が成功した後、ログイン ビューを閉じることができますが、開始ビューを起動することはできません。しかし、コントロールはホームビューに戻ったままです。
上記のシナリオでエラーは発生しません。
Appdeligate.m :
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
HomeViewController * homeview=[[HomeViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:homeview];
self.rootViewController = navigationController;
[navigationController setNavigationBarHidden:YES];
self.rootViewController.view.frame = [[UIScreen mainScreen] applicationFrame];
[self.window addSubview:self.rootViewController.view];
[window makeKeyAndVisible];
以下は、ログインモーダルビューを提示するホームビューのメソッドです
ログイン モーダル ビューの提示
LoginViewController * vc1 = [LoginViewController loginViewControllerWithNavBar:YES];
vc1.boxLoginDelegate = self;
[self presentModalViewController:vc1 animated:YES];
注 : LoginVeiwController は、HomeViewController によって提供されるモーダル ビュー コントローラーです。以下のように LoginVeiwController を閉じることで、別のモーダル ビュー コントローラー (コントローラーの開始) を起動/提示するのは正しい方法ですか。LoginVeiwController が閉じられると、コントロールは StartViewController を起動/表示するのではなく、HomeVeiwContrrler に戻るためです。
ホーム ビュー:
以下は、ログインに成功するとログイン ビューを閉じ、スタート ビューを起動しようとするホーム ビューのメソッドです。
- (void)loginViewController:(LoginViewController *)loginViewController didFinishWithResult:(LoginResult)result {
[self dismissModalViewControllerAnimated:YES];
startview = [[[startViewController alloc] init] autorelease];
[self.navigationController setNavigationBarHidden:YES];
[self presentModalViewController:startview animated:YES];
}
ボタンのクリックで StartView を直接表示すると、うまく起動しますが、didFinishWithResult では起動しません