よくわかりません。最初のビューを開くBarItemを備えたナビゲーションコントローラーがあります。いくつかの作業が完了したら、このビューを非表示にして、2番目のビューを開きたいと思います。
- ルートビュー:ナビゲーションコントローラー
- 最初のビュー:アクティビティインジケーター。一部のデータがまとめられています。
- 2番目のビュー:MFMailComposeViewController
ルートビューでは、BarItemは次の行を実行して最初のビューを開きます。
IndicatorViewController *indicator = [[IndicatorViewController alloc] initWithNibName:@"IndicatorViewController" bundle:nil];
indicator.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentModalViewController:indicator animated:YES];
最初のビュー(IndicatorViewController)はいくつかの作業を行い、最終的に実行されます
[self dismissModalViewControllerAnimated:YES];
これは正常に機能します。しかし、-2番目のビューを開くにはどうすればよいですか?
私はこれを試しました:
2番目のビューを開きます。2番目のビューを閉じた後、最初のビューが再びポップアップし(まだそこにあるため)、この時点で閉じられます。このコードは最初のビューに配置されます。
- (void) viewDidAppear:(BOOL)animated {
static BOOL firstTime = YES;
if (firstTime) {
//do stuff that takes some time (that's why I show the indicator)
MailViewController *controller = [[MailViewController alloc] init];
if (controller)
[self presentModalViewController:controller animated:YES];
firstTime = NO;
} else {
[self dismissModalViewControllerAnimated:YES];
}
}
最初のビューが再びポップアップするので、2番目のビューが閉じられた後、ユーザーはインジケーターをもう一度見ることができます-それは私が望んでいることではありません。
ここで何が欠けていますか?これを行うためのより良い方法は何でしょうか?